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
在修改完 DataSet对象中的数据后,可以使用DataAdapter的Update方法,把DataSet对象中的数据更新到数据库中。这个方法很少使用,因为一般使用视图或存储过程给DataSet填充多个表中的数据。在关系数据库中更新或插入数据时,通常使用存储过程执行插入或更新操作,再使用 Command对象执行这些存储过程。存储过程可以执行一个或多个SQL语句,并在这些语句上进行逻辑和有效性检查。
以上是VB.NET数据库基础教程对DataAdapter类的简介,以后还会对更多的类做详细的简介,请大家即时关注。
【编辑推荐】