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

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

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

        本文从以下几点功能上,对ADOADO.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.NETDataSet使用导航范例对一个表中的行进行无序访问。对该数据的访问类似于访问集合或数组中的数据。这对于DataTableRows集合来说是可能的,它允许通过索引来访问行。按照关系从一个表中的行导航到另一个表中的相应行;

         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的强类型化的编程特征。数据是自我描述的,因为代码项名对应于代码所处理的真实问题。DataSetDataReader对象中的数据是强类型化的,使代码更容易阅读和编写;

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

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

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

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

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

                b)   ADO.NETADO.NET支持这一功能,因为ADO.NETDataSet对象使用XMLXML可以通过防火墙;

         8.   可伸缩性:

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

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

 

         理论还需在实践中得到运用,在以后的项目使用中,相信我们会对此有更为深刻的理解。

 

ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者Visual Basic,甚至Delphi,微软的竞争对手Borland的一个产品,现在也支持使用ADO访问数据库。   在新的编程框架.NET Framework中, 微软也提供了一个面向Internet的版本的ADO,称为ADO.NET。其对象模型和传统ADO差别很大。 ADO是一种面向对象的编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建一个统一数据库,不如提供一个能够访问不同数据库的统一接口,这样会更加实用一些。为实现这一目标,微软在数据库和微软的OLE DB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。 开发人员在使用ADO时,其实就是在使用OLE DB,不过OLE DB更加接近底层。ADO的一项属性远程数据服务,支持“数据仓库”ActiveX 组件以及高效的客户端缓存。作为ActiveX的一部分,ADO也是COM组件的一部分。ADO是由早期的微软数据接口??远程数据对象RDO演化而来的。RDO同微软的ODBC一同连接关系数据库,不过不能连接非关系数据库。   ADO向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口。对那些熟悉RDO的程序员来说,你可以把OLE DB比作是ODBC驱动程序。如同RDO对象是ODBC驱动程序接口一样,ADO对象是OLE DB的接口;如同不同的数据库系统需要它们自己的ODBC驱动程序一样,不同的数据源要求它们自己的OLE DB提供者(OLE DB provider)。目前,虽然OLE DB提供者比较少,但微软正积极推广该技术,并打算用OLE DB取代ODBC。   ADO向VB程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5的Dao350.dll所占内存的60%)。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以有多个,独立的"Recordset"对象来使用它。ADO针对客户/服务器以及WEB应用程序作了优化。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值