VB.NET数据库基础教程之全面解析DataAdapter类

VB.NET数据库基础教程今天我们来简介一下关于DataAdapter类,可能大家对于它不是很熟悉,在这里呢和大家分享一下关于DataAdapter类的原理机制,让大家更好的运用。

VB.NET数据库基础教程之DataAdapter类

DataAdapter是数据提供程序的一个子组件。与Connection和Command类一样,DataAdapter类也存在于ODBC、OLE DB、SQL Server和Oracle中。本节介绍OLE DB 的DataAdapter类,注意,不同版本的DataAdapter类功能相同。
DataAdapter类是数据库和程序之间的桥梁,它可以执行Command对象,从数据库中检索数据,再填充到DataSet对象中,或使用DataSet对象插入、更新和删除数据库中的数据。
DataAdapter用于填充DataSet对象,所以本节开始详细探讨DataSet对象。后续的章节将进一步介绍DataSet对象,讨论这个类的更多知识和用法。
DataAdapter最常用于从数据库中检索数据,并填充DataSet对象,所以先看看用于这种目的的构造函数。

Command类的第一个构造函数使用SQL字符串和Connection对象。下面的代码在DataAdapter的构造函数中使用前面例子中的Command对象。

下一行代码声明一个表示DataSet类的新对象,注意DataSet是独立于提供程序的,因为它不带ODBC、OLE DB、SQL或Oracle前缀。DataSet的构造函数提供了一个重载列表,但一般在初始化时不带参数。
初始化DataAdapter和DataSet对象后,就要从数据库中检索数据,并填充DataSet对象。使用DataAdapter的Fill方法来完成填充工作。Fill方法也提供了一个重载列表,但最常用的是下面代码中的Fill方法。该方法指定了表示DataSet的对象和一个表名,当要把多个表添加到DataSet对象中时,要使用该表名进行表映射。这个表名还可以用于引用DataSet对象中的表。注意不必在SQL语句的FROM子句中使用指定的表名,可以使用任何表名。

给DataSet对象填充数据后,DataAdapter的工作就完成了,应调用Dispose方法释放DataAdapter占用的资源,并把它设置为Nothing。Command的工作也完成了,最后也删除它,并把它设置为Nothing,以释放资源。另外,如果不进行更多的数据库操作,应关闭数据库连接,对该连接调用Dispose方法。

Dim objDataAdapter As New OleDbDataAdapter(objCommand)  


Dim objDataSet As New DataSet  


objDataAdapter.Fill(objDataSet, "Employees")  


objDataAdapter.Dispose()  



objDataAdapter = Nothing 



objCommand.Dispose()  



objCommand = Nothing 

DataAdapter 另一个常用的构造函数把SQL语句直接传送给DataAdapter,而不使用Command对象,如下面的代码所示。在这个构造函数中,传送了字符串变量和表示数据库连接的对象。在前面的例子中,是把Command对象传送给DataAdapter,使DataAdapter能提取其中的连接信息。而在这个构造函数中,为SQL语句使用了一个字符串,所以DataAdapter需要通过Connection对象了解如何与数据库通信,以执行SQL字符串。

Dim strSQL As String = _ 


"SELECT FIRST_NAME, LAST_NAME, FROM HR.EMPLOYEES"  


Dim objDataAdapter As New OleDbDataAdapter(strSQL, objConnection)  


Dim objDataSet As New DataSet  


objDataAdapter.Fill(objDataSet, "Employees")  


objDataAdapter.Dispose()  



objDataAdapter = Nothing 

给DataSet对象填充数据后,就可以处理这些数据。DataSet对象包含一系列表,每个表都包含一系列行,每一行都包含一系列项,这些项表示行中的列。这听起来很容易混淆,但实际上非常简单,如下面的代码所示。

代码为DataRow声明一个对象,它用于访问Rows集合中的每一行,Rows集合放在Tables集合的表中。接着使用For Each循环迭代表中的行。使用DataRow对象的Item属性,可以访问行中的每一列,如下面的代码所示。这行代码把DataSet对象中每个雇员的姓名输出到IDE的输出窗口中。

最后,使用完DataSet对象后,调用Dispose方法释放DataSet对象占用的资源,并把它设置为Nothing。这是非常重要的,因为DataSet对象表示一个内存数据高速缓存,即DataSet对象包含的所有数据都加载到内存中,因此应尽快释放该内存。

Dim objDataRow As DataRow  


For Each objDataRow In objDataSet.Table("Employees").Rows  


Debug.WriteLine(objDataRow.Item("FIRST_NAME") & " " &_  


objDataRow.Item("LAST_NAME")  


Next  


objDataSet.Dispose()  



objDataSet = Nothing 

相关推荐