作者在 2010-05-11 21:06:31 发布以下内容
DataAdapter(数据适配器)对象用于从数据源检索数据并填充DataSet中的表。DataAdapter还会将对DataSet作出的更改解析出数据源。DataAdapter使用.NET Frameword数据提供程序的Connetion对象连接到数据源,使用Command对象从数据源中检索数据并将更改解析回数据源。DataSet与DataAdapter是一起使用的。DataAdapter提供Connetion和Command对象,DataSet为数据提供位置。
DataAdapter的Fill方法用于将DataAdapter的SelectCommand的结果来填充DataSet.Fill将要填充的DataSet和DataTable对象(或要使用从SelectCommand中返回的行来填充的DataTable的名称)用作它的参数。Fill方法使用DataReader对象隐式地返回用于在DataSet中创建表的列名称和类型以及用来填充DataSet中表行的数据。表和列仅在不存在时才创建;否则,Fill将使用现有的DataSet架构。
下面的代码实现了创建DataAdapter的一个实例:(数据源为SQL Server 7.0或更高版本)
'创建数据库连接
Dim sqlConn as SqlConnection = New SqlConnection("Data Source=localhost;Initial Catalog=test;Integrated Security=True")
'设置command对象,从数据库表examp中返回ID和age两列
Dim selectCMD AS SqlCommand = New SqlCommand("SELECT ID,age FROM Examp",sqlConn)
'设置在终止执行命令的尝试并生成错误之前的等待时间
selectCMD.CommandTimeout=30
'创建DataAdapter实例
Dim custDA as SqlDataAdapter = New SqlDataAdapter
'设置一个SQL数据,用于在数据源中选择记录
custDA.SelectCommand=selectCMD
sqlConn.Open() '打开数据库连接
'创建DataSet实例
Dim custDS as DataSet = New DataSet
'用DataAdapter的Fill方法填充DataSet实例
custDA.Fill(custDS,"Customers")
sqlConn.Close() '关闭数据库连接
如果数据源为OLE DB数据源,或者ODBC数据源,仅需更改相应的Connection和Command对象即可。Dim sqlConn as SqlConnection = New SqlConnection("Data Source=localhost;Initial Catalog=test;Integrated Security=True")
'设置command对象,从数据库表examp中返回ID和age两列
Dim selectCMD AS SqlCommand = New SqlCommand("SELECT ID,age FROM Examp",sqlConn)
'设置在终止执行命令的尝试并生成错误之前的等待时间
selectCMD.CommandTimeout=30
'创建DataAdapter实例
Dim custDA as SqlDataAdapter = New SqlDataAdapter
'设置一个SQL数据,用于在数据源中选择记录
custDA.SelectCommand=selectCMD
sqlConn.Open() '打开数据库连接
'创建DataSet实例
Dim custDS as DataSet = New DataSet
'用DataAdapter的Fill方法填充DataSet实例
custDA.Fill(custDS,"Customers")
sqlConn.Close() '关闭数据库连接
该代码不显示打开和关闭Connection。如果Fill方法发现连接尚未打开,它将隐式地打开DataAdapter正在使用的Connetion。如果Fill已打开连接,它还将在Fill完成时关闭连接。当处理单一操作(如Fill或Update)时,这可以简化成员的代码。但是,如果在执行多项需要打开连接的操作,则可以通过这样的方式提高应用程序的性能,即显式调用Connetion的Open方法,对数据源执行操作,然后调用Connection的Close方法。为了释放资源供其他客户端应用程序使用,应设法使与数据源连接打开尽可能短的时间。
若DataAdapter遇到了多个结果集,它将在DataSet中创建多个表。将向这些表提供递增的默认名称TableN,以表示Table0的“Table”为第一个表名。如果以参数形式向Fill方法传递表名称,则将向这些表提供递增的默认名称TableNameN。
可以将任意数量的DataAdapter与一个DataSet一起使用。每个DataAdapter都可用于填充一个或多个DataTable对象并将更新解析回相关数据源。DataRelation和Constraint对象可以在本地添加到DataSet,这样,就可以使来自多个不同数据源的数据相关联。例如,DataSet可以包含来自Microsoft SQL Server数据库、通过OLE DB公开的IBM DB2数据库以及对XML进行流处理的数据源的数据。一个或多个DataAdapter对象可以处理与每个数据源的通信。