ADO和ADO.NET的区别(数据访问角度)
2017-08-28 11:43
316 查看
1. 什么是ADO.NET?
简单的讲,ADO.NET是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的方式与数据交互的技术。对于ADO.NET来说,可以处理数据源是多样的。可以是应用程序唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的数据(如文本文件、XML、关系数据库等)。
具体来说,ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索、处理和更新所包含的数据。
作为.NET框架的重要组成部分,ADO.NET 类封装在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。当编译使用 System.Data 命名空间的代码时,需要引用System.Data.dll 和 System.Xml.dll。
2. 数据访问方式的历史
下面简单的回顾一下微软的数据访问方式所走过的几个阶段。
◆ODBC – (Open Database Connectivity)是第一个使用SQL访问不同关系数据库的数据访问技术。使用ODBC应用程序能够通过单一的命令操纵不同的数据库,而开发人员需要做的仅仅只是针对不同的应用加入相应的ODBC驱动。
◆DAO - (Data Access Objects)不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。
◆RDO – 在使用DAO访问不同的关系型数据库的时候,Jet引擎不得不在DAO和ODBC之间进行命令的转化,导致了性能的下降,而RDO(Remote Data Objects)的出现就顺理成章了。
◆OLE DB – 随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM(Component Object Model)的OLE DB应运而生了。
◆ADO – 基于OLE DB之上的ADO更简单、更高级、更适合Visual Basic程序员,同时消除了OLE DB的多种弊端,取而代之是微软技术发展的趋势。
3、从数据访问的几点功能上,对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:对数据库数据进行断开连接的访问,无需进行长时间地维护数据库锁定或者有效数据库连接,没有对有限的数据库资源的争夺。
小结:ADO和ADO.NET的区别还有很多,在接下来的学习中一一说明。
简单的讲,ADO.NET是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的方式与数据交互的技术。对于ADO.NET来说,可以处理数据源是多样的。可以是应用程序唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的数据(如文本文件、XML、关系数据库等)。
具体来说,ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索、处理和更新所包含的数据。
作为.NET框架的重要组成部分,ADO.NET 类封装在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。当编译使用 System.Data 命名空间的代码时,需要引用System.Data.dll 和 System.Xml.dll。
2. 数据访问方式的历史
下面简单的回顾一下微软的数据访问方式所走过的几个阶段。
◆ODBC – (Open Database Connectivity)是第一个使用SQL访问不同关系数据库的数据访问技术。使用ODBC应用程序能够通过单一的命令操纵不同的数据库,而开发人员需要做的仅仅只是针对不同的应用加入相应的ODBC驱动。
◆DAO - (Data Access Objects)不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。
◆RDO – 在使用DAO访问不同的关系型数据库的时候,Jet引擎不得不在DAO和ODBC之间进行命令的转化,导致了性能的下降,而RDO(Remote Data Objects)的出现就顺理成章了。
◆OLE DB – 随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM(Component Object Model)的OLE DB应运而生了。
◆ADO – 基于OLE DB之上的ADO更简单、更高级、更适合Visual Basic程序员,同时消除了OLE DB的多种弊端,取而代之是微软技术发展的趋势。
3、从数据访问的几点功能上,对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:对数据库数据进行断开连接的访问,无需进行长时间地维护数据库锁定或者有效数据库连接,没有对有限的数据库资源的争夺。
小结:ADO和ADO.NET的区别还有很多,在接下来的学习中一一说明。
相关文章推荐
- ADO 与ADO.NET两种数据访问方式区别
- ADO与ADO.NET两种数据访问方式区别
- ADO 和ADO.NET数据访问功能的区别
- ADO和ADO.NET在数据访问上的区别
- ADO 与ADO.NET两种数据访问方式区别
- ADO 与ADO.NET两种数据访问方式区别
- ADO与ADO.NET两种数据访问方式区别
- ADO 与ADO.NET两种数据访问方式区别?
- ADO 与ADO.NET两种数据访问方式区别。
- ADO 与ADO.NET两种数据访问方式区别
- 使用 ADO.NET 和 Oracle 进行高级数据访问
- ADO.NET--事务的通用数据访问方法
- ADO.NET编程之美----数据访问方式(面向连接与面向无连接)
- ADO.NET笔记之数据访问技术总结
- ADO.NET - 非连接数据访问Adapter
- ADO.NET(一) 空间 ADO.NET结构 命名空间(车延禄) System.Data—— 所有的一般数据访问类 S(转载)
- ADO.NET数据访问的流程
- 使用 ADO.NET 和 Oracle 进行高级数据访问
- Adhesive框架系列文章--ADO.NET EF 数据访问模块使用
- ADO.NET数据访问模板整理