数据提供者Data Provider用来提供DataSet(以同样的方式从不同数据源获得数据,数据源的内存驻留形式)和数据库之间的联系,也包含了存取数据库的一系列接口。包括Sql Server .NET,OleDb.NET,Odbc.NET和Oracle.NET。每种有4个核心对象,对象间互相配合完成数据库的连接、操作、交互。
(1)Connection对象:对于不同的.net数据提供者,ADO.NET采用不同的Connection对象连接数据库。这些Connection对我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。
a. Sqlconnetcion类的对象连接是SQL Server数据库;
b. OracleConnection类的对象连接Oracle数据库;
c. OleDbConneetion连接支持OLE DB的数据库,如Access;
d. OdbcConnection类的对象连接支持ODBC的数据库。
与数据库的所有通讯都是通过Connection对象来完成的。包括打开、关闭数据库。
使用方法:
定义连接字符串,字符串中包括服务器名、数据库名、帐户名、密码;创建对应的Connection对象;使用Open()方法打开数据库;
string constr = "Data Source=(local);Initial Catalog=try;User ID=“”;Password=“";
SqlConnection con = new SqlConnection(constr);
con.Open();
(2)Command对象:用于对数据源执行指定指令,一般为不需要返回结果的命令或存储。不同数据提供者Command对象名称不同。不管数据库有无连接均可进行操作。
使用方法:所有实例方法参照构造函数
string sqlstr="update student set name='Jone' where name='Bill' ";
SqlCommand cmd=new SqlCommand(sqlstr, con);
cmd.ExecuteNonQuery();//有其它方法,大同小异
con.Close();
(3)DataReader对象:用于从数据库返回只读数据流。该对象提供顺序,以只读的方式读取Command对象获得的数据结果集。正是因为DataReader是以顺序的方式连续地读取数据,所以DataReader会以独占的方式打开数据库连接。
由于DataReader只执行读操作,并且每次只在内存缓冲区里存储结果集的一条数据,所以使用Datareader对象的效率比较高,如果要查询大量数据,同事不需要随机访问和修改数据,DataReader是优先的选择。DataReader对象有许多的属性和方法,具体可查询手册或帮助文档。
使用方法:
SqlCommand cmd= new SqlCommand(sqlstr, con);//创建Command对象
SqlDataReader dr =cmd.ExecuteReader();//执行查询
if (dr.HasRows)//判断数据表中是否含有数据
{
Console.WriteLine("manager数据表中含有数据");
}
else
{
Console.WriteLine("manager数据表中没有数据");
}
(4)数据适配器DataAdapter对象:数据适配器是 ADO.NET 托管提供程序(一组用于数据源与数据集之间的通信的对象)的组成部分,用于在应用程序和数据库之间交换操作数据,数据集可以看作数据源的内存驻留形式。
适配器是数据源和数据集的桥梁。使用方法:不唯一,详细参照构造函数
string strConnection = "provider=microsoft.jet.oledb.4.0;data source="" ;" ;
OleDbConnection conn = new OleDbConnection(strConnection); //定义连接对象
conn.Open();
string query = " select * from Tstudent ";
OleDbDataAdapter myadapter = new OleDbDataAdapter(query, conn); //执行SQL语句
DataSet ds = new DataSet();//新建数据集
myadapter.Fill(ds);//向DataSet中的表填充数据集
dataGridView1.DataSource = ds.Tables[0];//交互界面,显示到控件中
适配器除在实例化对象时就赋值操作命令外,还可以利用属性赋SQL语句。包括SelectCommand 、InsertCommand 、UpdateCommand 、DeleteCommand属性。例如:
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd1 = new SqlCommand("select * from dbo.Tstu", con);
da.SelectCommand = cmd1;
至此,c# 连接操作数据库知识点总结完毕。