DataAdapter类

1.DataAdapter

DataAdapter对象充当DataSet和数据源之间用于检索和保存数据的桥梁。DataAdapter类代表用于填充DataSet以及更新数据源的一组数据库命令和一个数据库连接。DataAdapter对象是ADO.NET数据提供程序的组成部分,该数据提供程序还包括连接对象、数据读取器对象和命令对象。

每个DataAdapter都在DataSet中的单个DataTable对象和SQL语句或存储过程所产生的单个结果集之间交换数据。可以使用DataAdpater在DataSet和数据源之间交换数据。一个常见例子是应用程序将数据从数据库读到DataSet中,然后将DateSet中的更改写回到数据库中。然而,DataAdapter可以从任何数据源中检索和更新数据(不仅仅是数据库),例如从Microsoft BizTalk服务器应用程序将数据读取到DataSet。

XxxDataAdapter类提供了方便地管理断开式功能性的途径,如图9-12所示。它用于填充数据集,然后以数据集的任何更改来更新相应的数据源。

 
(点击查看大图)图10-13  XxxDataAdapter对象模型

DataAdapter是为将查询结果存储到DataSet对象和DataTable对象中而设计的。Command对象使用户能够通过DataReader对象来检查查询结果。DataAdapter对象由一系列Command对象和决定DataAdapter如何与DataSet通信的映射属性的集合组成。

当使用DataAdapter将查询结果存储到DataSet时,DataAdapter使用Command与数据库进行通信。在内部,DataAdapter使用DataReader读取结果,然后将该结果复制到DataSet的新行中。DataAdapter用来从数据库中读取数据的Command对象存储在DataAdapter对象的SelectCommand属性中。

DataAdapter对象还有其他一些属性也包含Command对象:InsertCornmand、UpdateCommand和DeleteCommand。DataAdapter使用这些Command对象将保存在DataSet中的更改提交到数据库。

可以使用数据适配器来填充DataSet,并将数据的更改传送回数据源。

使用带SQL Server .NET数据提供程序的DataSet的步骤如下:

(1)创建SqlConnection对象,连接到SQL Server数据库。

(2)创建SqlDataAdapter对象。该对象包含能够指向4个SqlCommand对象的属性,这些对象指定SQL语句在数据库中进行SELECT、INSERT、DELETE和UPDATE等数据操作。

(3)创建包含一个或多个表的DataSet对象。

(4)使用SqlDataAdapter对象,通过调用Fill方法来填充DataSet表。SqlDataAdapter隐式执行包含SELECT语句的SqlCommand对象。

(5)修改DataSet中的数据。可以通过编程方式来执行修改,或者将DataSet绑定到用户界面控件(例如DataGrid),然后在控件中更改数据。

(6)在准备将数据更改返回数据库时,可以使用SqlDataAdapter并调用Update方法。SqlDataAdapter对象隐式使用其SqlCommand对象对数据库执行INSERT、DELETE和UPDATE语句。

2.DataAdapter类的属性和方法

尽管DataAdapter类包含很多属性和方法,但很可能每次只使用它们的某个子集。使用DataAdapter可对来自数据源的记录进行操作。通过使用4个DataAdapter属性(指定执行某条SQL语句或调用某个存储过程)中的一个,可以指定所要执行的操作。这些属性实际上是SqlCommand或OleDbCommand类的实例对象:

SelectCommand引用从数据源中检索行的Command对象。

InsertCommand引用将插入的行从DataSet写入数据源的Command对象。

UpdateCommand引用将修改的行从DataSet写入数据源的Command对象。

DeleteCommand引用从数据源中删除行的Command对象。

使用DataAdapter提供的方法,可以填充DataSet或将DataSet表中的更改传送到相应的数据存储区。这些方法包括:

Fill。使用SqlDataAdapter(或OleDbDataAdapter)的这个方法,从数据源增加或刷新行,并将这些行放到DataSet表中。Fill方法调用SelectCommand属性所指定的SELECT语句。

Update。使用DataAdapter对象的这个方法,将DataSet表的更改传送到相应的数据源中。该方法为DataSet的DataTable中每一指定的行调用相应的INSERT、UPDATE或DELETE命令。

3.创建使用新SELECT语句的DataAdapter

可以创建DataAdapter对象来执行新的SELECT语句,这样可以使断开式应用程序以只读方式访问数据库中的数据。可以使用数据适配器配置向导来创建DataAdapter,或者在代码中以编程方式创建DataAdapter。必须指定到所需数据库的连接,也可以指定新的SELECT语句从数据库中检索数据。

使用数据适配器配置向导创建DataAdapter的步骤如下:

(1)将SqlDataAdapter控件或OleDbDataAdapter控件从工具箱拖放到窗体上。

(2)在"数据适配器配置向导"→"选择您的数据连接"对话框中单击"新建连接"。

(3)在弹出的"添加连接"对话框中,输入到所需数据库的连接的详细信息,然后单击"确定"按钮。

(4)返回"选择您的数据连接"对话框,单击"下一步"按钮。

(5)在弹出的"选择查询类型"对话框中选择"使用SQL语句",然后单击"下一步"按钮。

(6)在弹出的"生成SQL语句"对话框中输入恰当的SQL查询语句,然后单击"高级选项"按钮。

(7)在弹出的"高级SQL生成选项"对话框中取消选中"生成Insert、Update和Delete语句"复选框,然后单击"确定"按钮。

(8)返回"生成SQL语句"对话框,单击"下一步"按钮。

(9)在弹出的"查看向导结果"对话框中单击"完成"按钮。

以编程方式创建DataAdapter的步骤如下:

(1)创建新的SqlDataAdapter对象或OleDbDataAdapter对象。

(2)创建新的SqlConnection对象或OleDbConnection对象,指定连接字符串以连接到所需的数据库。

(3)创建新的SqlCommand对象或OleDbCommand对象,指定SELECT语句以从数据库中检索所需的数据。

(4)对该命令对象调用AddParameter方法以指定该SELECT语句所需的参数。

(5)将此新的命令对象赋给DataAdapter对象的SelectCommand属性。

4.创建使用现有存储过程的DataAdapter

可以创建DataAdapter来执行现有的存储过程,从而使断开式应用程序能够使用数据库中现有的功能来检索复杂的表连接。可以使用数据适配器配置向导来创建DataAdapter,或者在代码中以编程方式创建它。必须指定到所需数据库的连接,以及从数据库中检索数据所要调用的存储过程的名称。

使用数据适配器配置向导创建DataAdapter的步骤如下:

(1)将SqlDataAdapter控件或OleDbDataAdapter控件从工具箱中拖放到窗体上。

(2)在"欢迎使用数据适配器配置向导"对话框中单击"下一步"按钮。

(3)在"选择您的数据连接"对话框中选择一个现有的连接(如果需要的话,也可单击"新建连接"来指定一个新的连接)。

(4)在"选择查询类型"对话框中选择"使用现有存储过程",然后单击"下一步"按钮。

(5)在"将命令绑定到现有存储过程"对话框中为Select操作选择一个现有的存储过程(如果存储过程不存在,则可在服务器资源管理器中创建它),单击"下一步"按钮。

(6)在"查看向导结果"对话框中单击"完成"按钮。

以编程方式创建DataAdapter的步骤按钮:

(1)创建新的SqlDataAdapter对象或OleDbDataAdapter对象。

(2)创建新的SqlConnection对象或OleDbConnection对象(如果有可用的对象,则使用现有的XxxConnecfion对象)。

(3)创建新的SqlCommand对象或OleDbCommand对象。为该命令对象指定如表10-3所示属性。

表10-3  Command属性

   

   

Connection

XxxConnection对象

CommandText

要调用的存储过程的名称

CommandType

System.Data.CommandType.StoredProcedure

(4)对该命令对象调用AddParameter方法来指定存储过程所需的参数。

(5)将此新的命令对象赋给DataAdapter对象的SelectCommand属性。

posted @ 2011-07-07 14:50  岑儿  阅读(1320)  评论(0)    收藏  举报