近年来,在基于 Windows 的应用程序中,作为实现数据存取的首选方法,ADO 起着举足轻重的作用。目前有大量 ADO 应用程序在使用中,同时大量的开发人员 都通晓 ADO 的开发。随着.NET Framework的出现,ADO 的改进版 ADO.NET 也随之出炉。
尽管 ADO 和 ADO.NET 之间有许多相似之处,但二者的操作方法 以及实现基础有很大的差别。为了帮助你实现向 ADO.NET 的平滑迁移,我们是考察一下在 ADO.NET 中如何实现某些公共任务。我将讨论几种数据访问方案,演示如何利用 ADO 来实现这些方案,同时演示如何用C#在 ASP.NET 中借助 ADO.NET 来解决同样的问题。我 将从二者与数据源连接的相似之处开始,继而我将细致地探讨 ADO 的 Recordset 对象如何演变发展为 ADO.NET 中许多与众不同的面向对象和方法 的特性。最后,我将揭示 firehose 游标,如何从行集中返回一个单值,以及如何处理 XML 等。
ADO 的演变
有些传统的 ADO 特性,如建立与数据源的连接在两个 ADO 版本之间改变很小。其它一些功能则变化很大,譬如表示一个非连接的行集(rowset),将行集保存为XML,将行集转化为一个层次行集(hierarchical rowset)。促成这些重大改变的一个原因是在 ADO 后期引入 XML 和数据整形(data-shaping)特性,而在 ADO.NET 里,这些特性在当初设计时就将这些特性内建在其中了。
与更早的数据访问工具如 DAO 和 RDO 相比,传统的 ADO 是很轻量级的,而使 ADO 能在n层应用程序开发中和 Visual Basic 6.0 一起得以流行的原因之一 是其简单性、易于导航的对象模式。ADO 的 Connection、Command 对象以相对比较直白的方式转变为 ADO.NET 的 Connection 、Command 对象,但是 ADO 的 Recordset 对象的特性转换到 ADO.NET 中后变成了几个不同的对象和方法。
ADO 之所以成为一个强大而通用的数据访问工具,部分原因是其对 XML 的支持以及管理非连接行集的能力。ADO 的 Recordset 可以 是与其数据源断开连接的,只要将其 CursorLocation 属性设置为 adUseClient,将 CursorType 属性设置为 adOpenStatic, 将 LockType 属性设置为 adLockBatchOptimistic 即可。一旦记录集(recordset)被打开和加载后,通过将其 ActiveConnection 属性 设置为 Nothing,使记录集保持为非连接状态。 ''''---Disconnecting an ADO Recordset 起初 XML 功能并未集成在 ADO 中,随着 XML 的流行,在 ADO 后期版本中增加了对 XML 的支持。ADO Recordset 对象中的 Save 方法可以将记录集的行和列保存为一个预定义的 XML 大纲(schema),并将其保存为一个文件或流。使用 XML 大纲并不灵活,但是这是试图将一个 ADO 行集(rowset)保存为 XML 的第一次尝试,并且让开发者对未来的开发方向有个较清晰的认识。Recordset 也可以从一个 XML 文件中加载,前提是其使用同样的XML大纲。下列代码演示 ADO 如何将一个记录集保存为一个 XML 文件:
oRs.CursorLocation = adUseClient
oRs.CursorType = adOpenStatic
oRs.LockType = adLockBatchOptimistic
''''— Or use adLockReadOnly
oRS.OpenSet
oRS.ActiveConnection = Nothing.Save "c:\MyRowSet.xml", adPersistXML 类似于 ASP 页面上的 Response 对象输出,行集可以保存为一个流。例如, 某些 ASP 代码可以接受一个请求,检索一个行集,将行集以流的形式发送给 Response 对象,后者将结果返给客户端。下列代码演示如何将一个记录集的内容保存为一个 Stream 对象。也可以将 Save 方法的第一个参数置为 Response 对象,这样就可以将 XML 行集流输出给浏览器:Dim oStm As ADODB.StreamSet
oStm = New ADODB.Stream
oRs.Save oStm, adPersistXML
传统的 ADO 和 ASP 均支持流处理。当然,在.NET中,Web services 同样支持流,并且 Web Services 提供了比传统的 ADO 和 ASP 多得多的功能。实际上,Web Services 是一项处理数据请求并将数据以 XML 形式通过 HTTP 传输的技术。ADO 可以以流形式保存 XML,不过这是 ADO 后来的完善措施(afterthought)。而 ADO.NET 的 DataSet 对象通过 WriteXml 和 WriteXmlSchema 方法将其内容输出为一个 XML 文件或流。因此,ADO 的 Recordset 的 Save 方法是经过改进以适于将其内容输出为一个 XML,而 ADO.NET 的 DataSet 一开始就具有此特性。
请保留地址 http://www.qqread.com/dotnet/y351969.html相关专题
- ADO.NET实用技巧 (6407篇文章)
- .NET移动与嵌入式技术 (5974篇文章)
- .NET开发手册 (5673篇文章)
- ADO和ADO.NET的比较和迁移 (224篇文章)
- ADO.NET与其它语言比较篇 (224篇文章)
- .NET与数据库 (474篇文章)
- WPF的Attached属性 (0次浏览)
- WPF,将颠覆的设计世界? (0次浏览)
- Windows是否已经变成了一个怪物? (0次浏览)
- Windows2008用RODC保证分支机构安全 (0次浏览)
- Windows2008的NLB配置攻略 (0次浏览)
- Windows SharePoint Services 和 SharePoint P (0次浏览)
- Windows Forms中实现统一的数据验证(一) (0次浏览)
- Windows API一日一练:DrawText函数 (0次浏览)
- Win2008初次体验的几个心得 (0次浏览)
- WEB应用数据库访问的优化 (0次浏览)



