- 论坛徽章:
- 0
|
最近因工作需要,用C#做了些应用,现对ADO.NET的数据库访问作一个小结,以供大家交流学习,迟些时候贴上自己的一些代码。
ADO.NET的数据访问对象是以下几个:
1、Connection对象:与数据源建立连接,连接sql server7.0 或更新版本数据库用SqlConnection,连接OLEDB数据源使用OledbConnection.
2、Command 对象:对数据源执行SQL命令并返回结果,SQL Server7.0或更新版本用SqlCommand,OLE DB数据源使用OledbCommand.
3、DataReader对象: 读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用SqlDataReader,Oledb数据源使用OledbReader
4、DataAdapter对象:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet ,或根据DataSet中的数据必定数据源。Sql server7.0或以上版本使用SqlDataAdapter,Oledb 数据源使用OledbAdpater.
5、DataSet对象:服务器内存中的数据库
6、DataView对象:用于显示DataSet中的数据
从数据库中读取纪录的另一种方法是使用Dataset对象和Dataadapter对象.Dataset是ADO.NET的主要组件之一,它用于缓存从数据源检索到的数据信息。Dataadapter作为Dataset和数据源之间的桥接器,用于检索和保存数据。 Dataadapter从数据库中获取数据后使用Fill方法把数据填充到Dataset中。下面以Sqldataadapter为例说明如何使用 Dataset对象和Dataadapter对象从数据库中读取记录。执行查询的关键步骤如下:
1、创建与数据库建立连接的Sqlconnection,传递连接字符串。
2、构造包含查询语句的Sqldataadapter对象;
3、若要使用查询结果填充Dataset对象,则调用命令Fill方法。
c#利用ado.net进行数据库开发的基本步骤:
1、创建和数据库连接的connection 对象。
2、配置DataAdapter对象并创建和操作数据集DataSet。
3、将数据库中的表添加到DataSet中。
4、把数据集DataSet绑定到DataGrid上。利用DataAdapter 的Fill方法把数据填充到DataSet,最终的数据库中的数据显示在用户界面的DataGrid中。
c#中从数据库查询记录的方法分类:
一般使用两种方法:
一种是通过DataReader对象直接访问;另一种则是通过数据集Dataset和Dataadapter对象访问.
使用ADO.NET的Datareader对象能从数据库中检索数据。检索出来的数据形成一个只读只进的数据流,存储在客户端的网络缓冲区内。 Datareader对象的read方法可以前进到一下条记录。在默认情况下,每执行一次read方法只会在内存中存储一条记录系统的开销非常少。
创建datareader之前必须先创建sqlcommand对象,然后调用该对象的executereader方法来构造sqldatareader对象,而不是直接使用构造函数。
下面的示例程序完成的功能是访问sqlserver数据库,并使用datareader从northwind数据中读取记录,并将查询结果通过控制台输出。
using System;
using System.Data;
using System.Data.SqlClient;
namespace ReadDataFromDB{
class Class1{
static void Main(string[] args){
string myconn="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind";
//需要执行的SQL语句
string mysql="select OrderID,CustomerID from Orders where CustomerID='CHOPS'";
//打开数据库连接。
SqlConnection myconnection=new SqlConnection(myconn);
myconnection.Open();
//创建SqlCommand 对象
SqlCommand mycommand=new(mysql,myconnection);
//通过SqlCommand的ExecuteReader()方法构造DataReader 对象。
SqlDataReader myreader=mycommand.ExecuteReader();
while(myreader.read()){
Console.WriteLine(myreader.GetInt32(0)+","+myreader.GetString(1));
}
myreader.Close();
myconnection.Close();
}
}
}
VS2008下C#存储图片到sql2005数据库中 收藏
表名:table_3
表结构
字段名 字段类型 其它
id int 自增长
i_image image
写数据库
view plaincopy to clipboardprint?
1. //写入数据库
2.
3. //创建数据库连接字符串
4. string strConn = @"Data Source=.;Initial Catalog=test;User ID=sa assword=sa";
5.
6. //创建SQL语句
7. string sql = "insert into table_3 (i_image) values (@i_image)";
8. try
9. {
10. //创建SqlConnection对象
11. SqlConnection connection = new SqlConnection(strConn);
12.
13. //创建SqlCommand对象
14. SqlCommand command = new SqlCommand(sql, connection);
15.
16.
17. Byte[] bytBLOBData = getphoto(textEdit1.Text);
18.
19. ////创建参数对象
20. SqlParameter prm = new SqlParameter("@i_image", SqlDbType.Image, bytBLOBData.Length,
21. ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, bytBLOBData);
22.
23. command.Parameters.Add(prm);
24.
25. //打开数据库连接
26. connection.Open();
27.
28. command.ExecuteNonQuery();
29.
30. connection.Close();
31. }
32.
33. catch (Exception ex)
34. {
35. MessageBox.Show(ex.Message);
36. }
37. finally
38. {
39. MessageBox.Show("上传完成!" ;
40. }
//写入数据库 //创建数据库连接字符串 string strConn = @"Data Source=.;Initial Catalog=test;User ID=sa assword=sa"; //创建SQL语句 string sql = "insert into table_3 (i_image) values (@i_image)"; try { //创建SqlConnection对象 SqlConnection connection = new SqlConnection(strConn); //创建SqlCommand对象 SqlCommand command = new SqlCommand(sql, connection); Byte[] bytBLOBData = getphoto(textEdit1.Text); ////创建参数对象 SqlParameter prm = new SqlParameter("@i_image", SqlDbType.Image, bytBLOBData.Length, ParameterDirection.Input, true, 0, 0, null, DataRowVersion.Default, bytBLOBData); command.Parameters.Add(prm); //打开数据库连接 connection.Open(); command.ExecuteNonQuery(); connection.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { MessageBox.Show("上传完成!" ; }
view plaincopy to clipboardprint?
1. /// <summary>
2. /// 定义将图片转化为二进制代码的函数getphoto()
3. /// </summary>
4. /// <param name="photopath">图片路径</param>
5. /// <returns>二进制代码</returns>
6. public Byte[] getphoto(string photopath)
7. {
8. string str = photopath;
9. FileStream file = new FileStream(str, FileMode.Open, FileAccess.Read);
10. Byte[] bytBLOBData = new Byte[file.Length];
11. file.Read(bytBLOBData, 0, bytBLOBData.Length);
12. file.Close();
13. return bytBLOBData;
14. }
/// <summary> /// 定义将图片转化为二进制代码的函数getphoto() /// </summary> /// <param name="photopath">图片路径</param> /// <returns>二进制代码</returns> public Byte[] getphoto(string photopath) { string str = photopath; FileStream file = new FileStream(str, FileMode.Open, FileAccess.Read); Byte[] bytBLOBData = new Byte[file.Length]; file.Read(bytBLOBData, 0, bytBLOBData.Length); file.Close(); return bytBLOBData; }
读数据库
view plaincopy to clipboardprint?
1. //读数据库
2.
3. //创建数据库连接字符串
4. string strConn = @"Data Source=.;Initial Catalog=test;User ID=sa assword=sa";
5.
6. //创建SQL语句
7. string sql = "select id,i_image from table_3";
8. try
9. {
10. //创建SqlConnection对象
11. SqlConnection connection = new SqlConnection(strConn);
12.
13. //打开数据库连接
14. connection.Open();
15.
16. //创建SqlCommand对象
17. SqlCommand command = new SqlCommand(sql, connection);
18.
19. //创建DataAdapter对象
20. SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
21.
22. //创建DataSet对象
23. DataSet dataSet = new DataSet();
24.
25. //填充dataset
26. dataAdapter.Fill(dataSet, "table_3" ;
27.
28. int c = dataSet.Tables["table_3"].Rows.Count;
29.
30.
31. connection.Close();
32.
33. gridControl1.DataSource = dataSet.Tables["table_3"];
34.
35. }
36.
37. catch (Exception ex)
38. {
39.
40. MessageBox.Show(ex.Message);
41.
42. } .最简单的方法:打印输出
C#代码 收藏代码
1. Console.WriteLine("hello,come on baby");
Console.WriteLine("hello,come on baby");
这句话等同于java中的
Java代码 收藏代码
1. Syste.out.println("hello" ;
Syste.out.println("hello" ;
2.error list view
点击视图-错误列表(view-error list),打开错误视图,这个没啥好所的,自己实践
3.控制台输出
C#代码 收藏代码
1. Debug.WriteLine("debug:hello" ;//仅在调试模式下运行
2. Trace.WriteLine("trace:hello" ;//可用于发布程序
Debug.WriteLine("debug:hello" ;//仅在调试模式下运行
Trace.WriteLine("trace:hello" ;//可用于发布程序
记得要使用Debug或Trace,需要引入相关类
C#代码 收藏代码
1. using System.Diagnostics;
using System.Diagnostics;
在IDE下查看输入,视图-输出(view-output)
在IDE下,标准工具栏中,可进行Debug/Release模式的切换
其他
C#代码 收藏代码
1. Debug.WriteIf();
2. Debug.WriteLineIf();
3. Trace.WriteIf();
4. Trace.WriteLineIf();
Debug.WriteIf();
Debug.WriteLineIf();
Trace.WriteIf();
Trace.WriteLineIf();
插入点 (类似DeBug.WriteLine语句,但不需要改变代码,为IDE自带功能)
C#代码 收藏代码
1. 1。选中代码行
2. 2。右键-断点(BrackPoint)-插入跟踪点(insert TracePonit)-弹出的窗口中输入文本
3.
1。选中代码行
2。右键-断点(BrackPoint)-插入跟踪点(insert TracePonit)-弹出的窗口中输入文本
要查看所有断点(breckPoint),可以在断点窗口中查看 主菜单中: 调试-窗口-断点 (Debug-window-breackPoint)
错误处理
try..catch....finally
好熟悉把,这个和java差不多,后面讨 |
|