DataAdapter的基类
DataAdapter的基类是DBDataAdapter。它的结构如下:
publicabstract class DbDataAdapter : DataAdapter,IDbDataAdapter,IDataAdapter, ICloneable
可以看到,DBDataAdapter是一个抽象基类,不能被实例化,并且继承DataAdapter类,IDBDataApdater,IdataAdapter以及Icloneable接口。层次结构如下:System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Data.Common.DataAdapter
System.Data.Common.DbDataAdapter
构造函数
①SqlDataAdapter () 无参数,构造后,可以给SqlDataAdapter对象的SelectCommand属性分配一个SqlCommand对象。作为补充,SqlDataAdapter还有UpdateCommand、DeleteCommand、InsertCommand属性。
②SqlDataAdapter (SqlCommand command) 用指定的 SqlCommand 作为 SelectCommand的属性。
③SqlDataAdapter (string commandText, SqlConnection connection) 第一个参数为T-SQL语句,第二个参数为一个SqlConnection对象。
④SqlDataAdapter (string commandText, string connectionString) 不需要显式声明SqlConnection与SqlCommand对象。
常用属性
●SelectComand属性:获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录。
●UpdateCommand属性:获取或设置一个 Transact-SQL 语句或存储过程,用于更新数据源中的记录。
●DeleteCommand属性:获取或设置一个 Transact-SQL 语句或存储过程,以从数据集删除记录。
●InsertCommand属性:获取或设置一个 Transact-SQL 语句或存储过程,以在数据源中插入新记录。
●TableMappings:获取一个集合,它提供源表和 DataTable 之间的主映射。
●UpdateBatchSize:获取或设置每次到服务器的往返过程中处理的行数。
常用方法
★Fill(DataSet):填充数据集。
★FillSchema(): 将 DataTable 添加到 DataSet 中,并配置架构以匹配数据源中的架构。
★Update():更新数据源。
★Dispose(): 释放由 Component 占用的资源。
★GetFillParameters():获取当执行 SQL SELECT 语句时由用户设置的参数。
常用事件
Disposed:添加事件处理程序以侦听组件上的 Disposed 事件。
FillError:在填充操作过程中出现错误时返回。
RowUpdated:在对数据源执行命令后的 Update 过程中发生。试图进行更新,因此激发了该事件。
RowUpdating:在对数据源执行命令前的 Update 过程中发生。试图进行更新,因此激发了该事件。
注意点
1)使用SqlDataAdapter对象的时候不需要打开Connection连接,在使用SqlDataAdapter的Fill()方法填充数据时会自动打开数据库连接,并在执行完之后自动关闭连接。如果Connection连接在调用Fill()方法之前打开,则执行填充之后不会关闭连接而是保持现有状态。
2)如果在一个Connection连接在调用多个Fill()方法,则在调用Fill()方法之前打开Connection连接以提高效率。
3)SqlDataAdapter和DataSet之间没有直接连接。SqlDataAdapter的Fill()方法填充完数据之后两者之间就没有连接了。
4)SqlDataAdapter 填充 DataSet 时,如果必须的表和列不存在则会自动创建。默认的返回架构中不包括主键(MissingSchemaAction 属性设置为AddWithKey时会创建主键)。
5)SqlDataAdapter可以使用FillSchema()方法填充DataSet时SqlDataAdapter 会创建 DataSet 的架构,并在填充数据之前就将主键信息包括进去。
6)当创建 SqlDataAdapter 的实例时,读/写属性将被设置为初始值。
7)SqlDataAdapter 与 SqlConnection 和 SqlCommand 一起使用,以便在连接到 SQLServer 数据库时提高性能。
8)SqlDataAdapter的UpdateCommand的执行机制是:当调用SqlDataAdapter.Update()时,检查DataSet中的所有行,然后对每一个修改过的Row执行SqlDataAdapter.UpdateCommand ,也就是说如果未修改DataSet中的数据,SqlDataAdapter.UpdateCommand不会执行。