您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:31 来源:vckbase.com

本文章共5865字,分4页,当前第1页,快速翻页:
 

从 ADO 迁移到 ADO.NET(一)

原著:John Papa
翻译:sages
逆风编程技术

原文出处:MSDN Magazine Jul 2004(Data Points)

  近年来,在基于 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 

oRs.CursorLocation = adUseClient 

oRs.CursorType = adOpenStatic 

oRs.LockType = adLockBatchOptimistic

 ''''— Or use adLockReadOnly

oRS.OpenSet 

oRS.ActiveConnection = Nothing
  起初 XML 功能并未集成在 ADO 中,随着 XML 的流行,在 ADO 后期版本中增加了对 XML 的支持。ADO Recordset 对象中的 Save 方法可以将记录集的行和列保存为一个预定义的 XML 大纲(schema),并将其保存为一个文件或流。使用 XML 大纲并不灵活,但是这是试图将一个 ADO 行集(rowset)保存为 XML 的第一次尝试,并且让开发者对未来的开发方向有个较清晰的认识。Recordset 也可以从一个 XML 文件中加载,前提是其使用同样的XML大纲。下列代码演示 ADO 如何将一个记录集保存为一个 XML 文件:

.Save "c:\MyRowSet.xml", adPersistXML
  类似于 ASP 页面上的 Response 对象输出,行集可以保存为一个流。例如, 某些 ASP 代码可以接受一个请求,检索一个行集,将行集以流的形式发送给 Response 对象,后者将结果返给客户端。下列代码演示如何将一个记录集的内容保存为一个 Stream 对象。也可以将 Save 方法的第一个参数置为 Response 对象,这样就可以将 XML 行集流输出给浏览器:
 
本文章更多内容1 - 2 - 3 - 4 - 下一页>>
相关文章

获得 Win32 窗口句柄的更好的方法
关于 IDispatch 接口的 LPDispatch 属性的实
用ATL开发复合控件
后缀表达式求值及校验
浅谈PDFlib中文输出(四)PDFlib 接收的几种
事件编程(二)
用鼠标手势动作来发送命令
在VC中使用 Flash 美化你的程序
更改屏幕显示数据的作弊程序
通过串口收发短消息(上)
利用VC++开发ASP图像处理组件(二)
可设置单元格颜色的ClistCtrl类
IP Messenger 详细分析
C :使用 Visual C 2005 的现代语言特色
毫秒定时器
类似于FlashGet的悬浮框的制作
不重起Windows直接更改IP地址
MFC程序员的WTL指南: 中文版序言
COM 组件设计与应用(五)——用 ATL 写第一
编写多文档应用程序

相关评论


本文章所属分类:首页 VC++

  热门关键字: