数据适配器是 ADO.NET
托管提供程序(用于在数据源和数据集之间通信的一组对象)的组成部分。(除适配器以外,托管提供程序还包括连接对象、数据读取器对象和命令对象。)适配器用于在数据源和数据集之间交换数据。在许多应用程序中,这意味着从数据库将数据读入数据集,然后从数据集将已更改数据写回数据库。然而,数据适配器可以在任意源和数据集之间移动数据。例如,可能会有在
Microsoft Exchange 服务器和数据集之间移动数据的适配器。
DATABASE LINK
两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。
C#:通过数据适配器进行更新
除了SqlDataAdapter最有可能包含的
SelectCommand之外,还可以定义InsertCommand、 UpdateCommand 和
DeleteCommand。顾名思义,这些对象都是适用于相应提供程序的命令对象(例如SqlCommand 或
OleDbCommand)实例。
有了这种灵活性后,就可以自由调整应用程序,对频繁使用的命令(例如select和insert)采用合适的存储过程来执行,对不常使用的命令(例如delete)采用SQL命令的方式执行。一般应为所有的数据库交互操作提供存储过程,因为这会更快,更容易调整。
本节的示例重新使用“调用存储过程”一节中的存储过程,插入、更新和删除Region记录,再把这些与上面编写的RegionSelect过程结合起来,生成一个新示例,这个示例使用这些命令来检索和更新DataSet中的代码。代码的主体如下所示。
1.
插入一个新行
把新行添加到DataTable中有两种方式。第一种方式是调用NewRow()函数,返回一个空行,然后向其填充数据,最后把它添加到Rows集合中:
DataRow r =
ds.Tables["Region"].NewRow();
r["RegionID"]=999;
r["RegionDescription"]="North West";
ds.Tables["Region"].Rows.Add(r);
第二种方式是把一组数据传送给Rows.Add()方法:
DataRow r =
ds.Tables["Region"].Rows.Add
(new object [] { 999 , "North West" });
DataTable中的每个新行都把自己的RowState设置为Added,在对数据库进行修改前,这个示例先把记录清空,然后把下面的行添加到DataTable中(以任何一种方式)。注意右边一列显示行的状态:
New row
pending inserting into database
1
Eastern
Unchanged
2
Western
Unchanged
3
Northern
Unchanged
4
Southern
Unchanged
999 North
West
Added
要在DataAdapter中更新数据库,调用Update方法:
da.Update(ds
, "Region");
对于DataTable中的每一新行,这将执行存储过程(在本例中是RegionInsert),然后再次把DataTable中的记录清空,查看对数据库进行的修改。
New row
updated and new RegionID assigned by database
1
Eastern
Unchanged
2
Western
Unchanged
3
Northern
Unchanged
4
Southern
Unchanged
5 North
West