ADO.NET学习之SqlDataAdapter
ADO.NET
提供了2中data access
模式
1.Connection oriented data access
2.Disconnected data access
下面说第二种Disconnected data access
,2个类SqlDataAdapter
和DataSet
DataSet
是个内存数据存储,可以持有一个或多个table
。DataSet
只是持有数据,并不和底层的数据表做交互。DataSet
对象并不知晓底层的数据源。
要在DataSet
中提取记录并将它们填入表中,需要使用另一个ADO.NET
对象DataAdapter
(如SqlDataAdapter
)
为了让DataAdapter
能够编辑、删除或者添加行,需要设定DataAdapter
对象的InsertCommand
、UpdateCommand
和DeleteCommand
属性。利用DataAdapter
填充DataSet
时,必须设定SelectCommand
DataAdapter
的方法:
Fill()
执行SelectCommand
中的查询后,向DataSet
添加一个DataTable
。如果查询返回多个结果集,该方法将一次添加多个DataTable
对象。还可以用该方法向现有的DataTable
添加数据Update()
检查DataTable
中的所有变化,并执行适当的InsertCommand
、UpdateCommand
和DeleteCommand
操作,为数据源执行批量更新
步骤:
1.创建SqlDataAdapter
对象,指定一个命令和一个connection对象
string connectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
SqlConnection connection = new SqlConnection(connectionString);
string selectQuery = "Select * from tblStudents";
SqlDataAdapter dataAdapter = new SqlDataAdapter(selectQuery, connection);
2.调用SqlDataAdapter.Fill()
方法
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet, "Students");
3.DataSet
中数据的改变并不会影响底层的数据
4.要更新底层数据库表中的数据,调用SqlDataAdapter.Update()
方法
dataAdapter.Update(DataSetObject, "Students");
SqlDataAdapter
在前面的章节中讲到了SqlDataReader
,是 connection oriented
,意味着需要一个活动的,被打开连接的 data source
。而SqlDataAdapter
和 DataSet
给我们提供了一种disconnected data access model
创建SqlDataAdapter
对象,参数
1.执行的sql
命令
2.执行命名的connection
如下的例子:
string CS = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
SqlDataAdapter dataAdapter = new SqlDataAdapter("select * from tblProductInventory02", con);
DataSet dataset = new DataSet();
dataAdapter.Fill(dataset);
GridView1.DataSource = dataset;
GridView1.DataBind();
}
1.创建SqlDataAdapter
对象,需要的参数(SqlCommandText
和 connection
对象)
2.创建DataSet
对象,DataSet
是内存数据存储,可存储表,就像数据库一样
3.Fill()
方法,打开数据的连接,执行sql
命令,使用数据填充dataset
,然后关闭数据库连接。
使用SqlDataAdapter
执行存储过程
创建如下的存储过程:
Create procedure spGetProductInventory
as
Begin
Select ProductId, ProductName, UnitPrice