微软对Recordset 对象的看法是:它相对于最初的为了产生一个SQL查询的结果的机制,显得有些过于臃肿了。因此,在ADO.NET中,Recordset对象的功能将被拆分到三个部分中去。首先是DataReader对象, 它所要完成的功能是将数据简单的表现出来;在ADO中,类似功能是由向前的、服务器端的光标(forward-only, server-side cursor)来实现的。然后是DataSet 和 DataSetCommand 对象,它们能够在客户端创建一个或一个以上的数据集合的缓存,并对它们进行操作。在ADO中,客户端光标的使用相对比较单一化,而在这方面ADO.NET则分别赋予这两个对象不同的功能,从而使它们具有更加专一而强大的功能。最后,是其他一些在ADO中能够实现的功能,比如说,利用Connection对象在保守锁定的情况下进行数据的更新。这是在ADO.NET中无法实现的功能,这意味着在某些时候,ADO将被继续使用。
在进入DataSet的讨论之前,我们先来简单的来看一看ADO.NET。
使用DataReader

ADO.NET提供了三个类:DBConnection, DBCommand 和 DBDataReader,它们与传统的ADO对象十分的相似。但是在.NET应用程序中它们不能被直接使用。能够使用的是从它们继承而来的类,比如ADOConnection, ADOCommand 和 ADODataReader来读取数据,这里的前提是存在一个OLEDB的Provider。如果要操作的对象是SQL Server,那么将使用另一些功能相同的类SQLConnection, SQLCommand 和 SQLDataReader 以便直接通过SQL Server 的 TDS 连接通道来获得更好的工作性能。下面是一个例子(因为在这里C#和VB.NET的代码区别不是很大,所以将只使用VB.NET的实例):
|
在上面你会发现在While Loop语句中没有出现MoveNext方法,因为DataReader的Read方法将自动前移光标,并会在没有数据的时候返回一个False值。这显然减轻了开发者的工作量。
在两种情况下,DataReader被推荐使用:一、客户界面利用手写代码,或是没有用到数据绑定并且数据的更新是利用手写的SQL语句或是存储过程,这种情况下,DataReader将提供有效的访问相关数据的方法;二、一个需要查看数据库状态的的过程,但不需要实现诸如自动更新的功能。一些比较好的应用实例有向下拉菜单填充数据,以及产品编号的验证。
理解DataSets
对于一些开发者来说,可能会对DataSets的使用颇有微词,但事实上,掌握它并不难。如果你对连接断开的RecordSet 模式,以及分层的RecordSet 的使用不陌生,并且乐于使用一些XML的话,那么利用DataSets 就没有什么困难了。
可是有什么必要去花费时间去重新学习一种对象模型呢?
理由之一是,ADO.NET 力推的断开连接模式(disconnected model)是非常有意义的。断开连接的数据伸缩性更高,因为这种模式对数据服务器的压力比较小。通过平行服务器对中间层进行扩展比对数据层进行扩展要容易的多,因此对于可扩展的应用程序来说,对数据层资源的使用要谨慎。断开连接模式将在这里得到应用。
理由二,在数据管理方面,断开连接模式有非常广阔的前景。
如果说有一种技术的发展比ADO还要迅速,这就是XML。XML解决了两个ADO所对的局限。
1、XML更加适用与跨平台的的数据传输,因为它能够穿越防火墙。
2、XML比ADO包括它的扩展ADO2.5描述的类型多。一个简单的例子,同样面对扁平的数据,普通的XML将比ADO显示出更高的效率。
DataSets是XML与ADO结合的产物,它的一个重要的特点是与数据库或SQL无关。它只是简单的对数据表进行操作,交换数据或是将数据绑定到用户界面上。
向DataSets中加入数据表的方法有两种:
1、利用DataSetCommand对象,它可以以XML 的形式返回一个数据库查询的结果。在处理数据库更新的时候,这种方法与ADO的客户端光标基本相同,但提供更强的控制。
2、直接对XML数据进行操作。DataSet 对象有对XML数据和Schemas进行读写的的方法,并且可以和XMLDataDocument对象(该对象是多用途XMLDocument类的继承)紧密的结合起来工作,它具有一些对扁平数据操作的特殊函数因此可以作为从DataSet 到通用XML DOM的桥梁。
下面是一段使用DataSet的代码:
|
以上的代码将一个‘AUTHORS’数据表填充到DataSet 对象实例ds中,并显示了XML数据和Schemas,请看两个显示结果:表1和表2。

向DataSet中添加数据表的操作是非常容易的,请看下面的代码:
|
表1显示XML Schema
表2显示DataSet 对象生成的数据
表4显示了DataSet 中现有的数据。可以发现现在有两种数据类型,同时SCHEMA 也做了相应的调整来描述这两种数据类型。
| 共4页: 1 [2] [3] [4] 下一页 | ||
|
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |