| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> VB.NET >> ado.net >> 文章正文
在 ADO 和 ADO.NET 中管理离线数据            【字体:
在 ADO 和 ADO.NET 中管理离线数据
作者:未知    文章来源:未知    点击数:    更新时间:2006-11-12

  您可以使用无数种方法在 VB6 和 VB.NET 中处理数据。这两个平台都支持诸如数组和集合之类的结构,开发人员通常将自定义类包装到这些结构中,就如您在 Carl Ganz 2004 年 3 月的专栏中看到的那样。数据独立(这可能是创建自定义数据抽象层的最大优势)允许用户在独立于数据库的情况下操作数据。这不仅降低了服务器的负担,还消除了维护到该数据库的开放连接的需要,或是对忘记更新 RDBMS 的担心。本月,Carl 将分析如何同时使用 ADO 和 ADO.NET 来创建此类数据对象。
  
  在 VB6 中,OLE DB 游标服务允许您创建通常作为虚构的Recordset 的内容。这些只是 ADO Recordset 对象的内存中实例,Field 对象将添加到这些实例中以形成一个数据结构。您需要显式创建这些 Recordset 客户端,如清单 1 中所示;默认情况下,它们是在服务器端创建的,您在服务器上不能有离线 Recordset。
  
  Set oRS = New ADODB.Recordset
  oRS.CursorLocation = adUseClient
  oRS.CursorType = adStatic
  oRS.LockType = adLockBatchOptimistic
  'Add a few fields
  With oRS.Fields
  .Append "LastName", adVarChar, 40, adFldIsNullable
  .Append "FirstName", adVarChar, 40, adFldIsNullable
  .Append "HireDate", adDate
  End With
  oRS.Open
  
  一旦创建 Recordset,您就可以用数据填充它了。请注意,Field 集合的 Append 方法只能用于关闭的 Recordset;如果您在打开 Recordset 的 Fields 集合上或是已设置 ActiveConnection 属性的 Recordset 上调用 Append,就会导致运行时错误。清单 2 阐释了如何将数据添加到 Recordset 对象。
  
  清单 2 中的最后两行代码阐释了如何创建索引,以使排序更加高效。(通常,您应通过一个提供初始排序的 SQL 命令来加载此类数据,但是如果数据在网格中,您可能希望允许用户通过(比如说)单击列标题来排序它。)
  
  清单 2. 用数据填充 Recordset 对象。
  
  'Populate with some data
  oRS.AddNew Array("LastName", "FirstName", "HireDate")_
  , Array("Washington", "George", "3/12/2003")
  oRS.AddNew Array("LastName", "FirstName", "HireDate")_
  , Array("Adams", "John", "8/5/2003")
  oRS.AddNew Array("LastName", "FirstName", "HireDate")_
  , Array("Jefferson", "Thomas", "4/27/2003")
  oRS.Update
  'Create an in-memory index
  oRS.Fields("LastName").Properties("Optimize").Value _
  = True
  'Sort on first name
  oRS.Sort = "FirstName"
  
  创建 Recordset 的另一种方法涉及到离线 Recordset。这只是一个 Recordset 对象,它随后将连接到由于将 ActiveConnection 属性设置为 Nothing 而离线的服务器(请参见清单 3)。
  
  清单 3. 创建离线 Recordset。
  
  Dim objConnection As ADODB.Connection
  Dim szSQL As String
  Set objConnection = New ADODB.Connection
  'Open a connection
  objConnection.ConnectionString = "whatever"
  objConnection.Open
  'Instantiate a Recordset object...
  Set oRS = New ADODB.Recordset
  oRS.CursorLocation = adUseClient
  oRS.CursorType = adOpenStatic
  oRS.LockType = adLockBatchOptimistic
  '...and set the ActiveConnection property
  Set oRS.ActiveConnection = objConnection
  szSQL = "SELECT LastName, FirstName " & _
  "FROM Employees " & "ORDER BY LastName, FirstName"
  'Open the Recordset and return the employee data
  oRS.Open szSQL
  Set oRS.ActiveConnection = Nothing
  objConnection.Close
  Set DataGrid1.DataSource = oRS
  
  使用 ADO.NET
  ADO.NET 为离线数据管理提供了更强大的功能。DataTable 和 DataSet 对象本身就定义为离线,因此您不必执行任何操作来使它们离线。从概念上来说,ADO.NET DataTable 对象和 ADO Recordset 对象的编程创建过程非常类似,如清单 4 中所示。在本示例中,我们要创建一个 DataTable 对象,并向其添加列和行对象。正如您将看到的那样,ADO.NET 的方法使用了一个比基于 COM 的 ADO 所使用的更加层次化的对象模型

[1] [2] [3] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 小技巧:更改数据库所有者的…

  • .NET 连接池救生员

  • 导入Excel电子表格数据到SQL…

  • DataGrid使用心得(附大量代码…

  • ADO.NET 2.0 Dataset和Datat…

  • ADO.NET读书笔记系列

  • 数据层组件设计与数据传递二

  • 数据层组件设计与数据传递一

  • 运用 ADO.NET 对象优化数据查…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |