您的位置:首页 > 其它

ADO 和ADO.NET数据访问功能的区别

2013-06-30 16:17 316 查看
对于任何人来说,在学习之初,我们感觉困难的不是新知识的学习,而是新知识和旧知识极类似的部分。这样,会让我们感觉迷茫,极大的混淆了我们已有的知识经验,对此我们会感到恐慌,所以,对于新旧知识的区别学习,是米老师一直强调的,也是我们迫切不要学习的。

现在要说关键了,ADO我们在一年前已经有所接触了,一年后,霎间ADO.NET,慌了,这是什么呢?和ADO有什么区别呢?为什么ADO还在正常工作时,我们还要学习心得数据访问对象模型呢?不要着急,我们慢慢来看看,两者究竟有什么区别。

本文从以下几点功能上,对ADO和ADO.NET的详细比较:


1.
驻留内存的数据表示方式:

a) ADO:使用Recordset对象保存单行数据,很像数据库表;

b) ADO.NET:使用DataSet对象,该对象可以包含由DataTable对象表示的一个或多个表;


2.
多个表之间的关系:

a) ADO:需要对单个结果表中的多个数据库表使用JOIN查询来组装数据,并提供层次结构记录集,不过它们很难使用;

b) ADO.NET:支持DataRelation对象,将一个DataTable对象中的行和另一个DataTable对象中的行关联起来;


3.
数据导航:

a) ADO:使用.MoveNext方法顺序遍历Recordset中的行;

b) ADO.NET:DataSet使用导航范例对一个表中的行进行无序访问。对该数据的访问类似于访问集合或数组中的数据。这对于DataTable的Rows集合来说是可能的,它允许通过索引来访问行。按照关系从一个表中的行导航到另一个表中的相应行;

4. 断接访问:

a) ADO:由Recordset提供,但必须显式编码。对于Recordset对象,在默认情况下是通过调用OLE
DB提供程序来和数据库通信;

b) ADO.NET:对DataAdapter对象使用标准化的调用,来和数据库通信。该对象可以和OLE
DB数据提供程序或直接与SQL Sever数据提供程序通信;


5.
可编程性:

a) ADO:所有Recordset字段数据类型都是COM Variant数据类型,并通常和数据库表中的字段名相对应;

b) ADO.NET:使用XML的强类型化的编程特征。数据是自我描述的,因为代码项名对应于代码所处理的真实问题。DataSet和DataReader对象中的数据是强类型化的,使代码更容易阅读和编写;


6.
共享各层间或组件间的断开连接数据:

a) ADO:使用COM编组以发送断开连接的数据集,它只支持由COM标准定义的数据类型。需要进行类型转换,这要求使用系统资源;

b) ADO.NET:以XML格式发送DataSet。XML格式对数据类型没有限制,不需要类型转换;

7. 通过防火墙发送数据:

a) ADO:这对于ADO来说,比较成问题,因为防火墙通常用于防止系统级请求,如COM编组;

b) ADO.NET:ADO.NET支持这一功能,因为ADO.NET的DataSet对象使用XML,XML可以通过防火墙;

8. 可伸缩性:

a) ADO:因为在ADO中,默认情况下是使用连接的Recordset对象、数据库锁定和活动数据库连接,以长时间地争夺有限的数据库资源;

b) ADO.NET:对数据库数据进行断开连接的访问,无需进行长时间地维护数据库锁定或者有效数据库连接,没有对有限的数据库资源的争夺。



理论还需在实践中得到运用,在以后的项目使用中,相信我们会对此有更为深刻的理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: