ADO.NET 和 ADO 的比较

ado|比较

 
您可以通过将 ADO.NET 的各项功能与 ActiveX 数据对象 (ADO) 的特定功能进行比较来理解 ADO.NET 的功能。

数据的内存中表示形式

在 ADO 中,数据的内存中表示形式为记录集。在 ADO.NET 中,它为数据集。它们之间有重要的差异。

表的个数

记录集看起来像单个表。如果记录集将包含来自多个数据库表的数据,则它必须使用 JOIN 查询,将来自各个数据库表的数据组合到单个结果表中。

相反,数据集是一个或多个表的集合。数据集内的表称为数据表;明确地说,它们是 DataTable 对象。如果数据集包含来自多个数据库表的数据,它通常将包含多个 DataTable 对象。即,每个 DataTable 对象通常对应于单个数据库表或视图。这样,数据集可以模仿基础数据库的结构。

数据集通常还包含关系。数据集内的关系类似于数据库中的外键关系,即它使多个表中的行彼此关联。例如,如果数据集包含一个有关投资者的表和另一个有关每个投资者的股票购买情况的表,则数据集可能还包含一个关系来连接投资者表的各个行和购买表的对应行。

由于数据集可以保存多个独立的表并维护有关表之间关系的信息,因此它可以保存比记录集丰富得多的数据结构,包括自关联的表和具有多对多关系的表。

数据导航和游标

在 ADO 中,您使用 ADO MoveNext 方法顺序扫描记录集的行。在 ADO.NET 中,行表示为集合,因此您可以像依次通过任何集合那样依次通过表,或通过序号索引或主键索引访问特定行。DataRelation 对象维护有关主记录和详细资料记录的信息,并提供方法使您可以获取与正在操作的记录相关的记录。例如,从 Investor 表的“Nate Sun”的行开始,可以定位到 Purchase 表中描述其购买情况的那组行。

“游标”是数据库元素,它控制记录导航、更新数据的能力和其他用户对数据库所做更改的可见性。ADO.NET 不具有固有的游标对象,而是包含提供传统游标功能的数据类。例如,在 ADO.NET DataReader 对象中提供只进、只读游标的功能。有关游标功能的更多信息,请参见数据访问技术。

将打开连接的时间降至最低

在 ADO.NET 中,打开连接的时间仅足够执行数据库操作,例如“选择”(Select) 或“更新”(Update)。您可以将行读入数据集中,然后在不保持与数据源的连接的情况下使用它们。在 ADO 中,记录集可以提供不连接的访问,但 ADO 主要是为连接的访问设计的。

ADO 和 ADO.NET 中的不连接处理之间存在一个显著差异。在 ADO 中,通过调用 OLE DB 提供程序来与数据库通信。但在 ADO.NET 中,您通过数据适配器(OleDbDataAdapter、SqlDataAdapter、OdbcDataAdapter 或 OracleDataAdapter 对象)与数据库通信,这将调用 OLE DB 提供程序或基础数据源提供的 API。ADO 和 ADO.NET 之间的主要区别在于:在 ADO.NET 中,数据适配器允许您控制将对数据集所做的更改传输到数据库的方式,方法是实现性能优化、执行数据验证检查或添加其他任何额外处理。

注意   数据适配器、数据连接、数据命令和数据读取器是组成 .NET Framework 数据提供程序的组件。Microsoft 和第三方供应商可能会提供其它提供程序,这些提供程序也可集成到 Visual Studio 中。有关不同 .NET 数据提供程序的信息,请参见 .NET 数据提供程序。

在应用程序间共享数据

在应用程序间传输 ADO.NET 数据集比传输 ADO 不连接的记录集要容易得多。若要将 ADO 不连接的记录集从一个组件传输到另一个组件,请使用 COM 封送。若要在 ADO.NET 中传输数据,请使用数据集,它可以传输 XML 流。

相对于 COM 封送,XML 文件的传输提供以下便利之处:

更丰富的数据类型

COM 封送提供一组有限的数据类型(由 COM 标准定义的那些类型)。由于 ADO.NET 中的数据集传输基于 XML 格式,所以对数据类型没有限制。因此,共享数据集的组件可以使用这些组件一般会使用的任何丰富的数据类型集。

性能

传输大型 ADO 记录集或大型 ADO.NET 数据集会使用网络资源;随着数据量的增长,施加于网络的压力也在增加。ADO 和 ADO.NET 都使您可以最大限度地降低所传输的数据。但 ADO.NET 还提供另一个性能优势:ADO.NET 不需要数据类型转换。而需要 COM 封送来在组件间传输记录集的 ADO,则需要将 ADO 数据类型转换为 COM 数据类型。

穿透防火墙

防火墙可以影响试图传输不连接的 ADO 记录集的两个组件。请记住,防火墙通常配置为允许 HTML 文本通过,但防止系统级请求(如 COM 封送)通过。

因为组件使用 XML 交换 ADO.NET 数据库,所以防火墙可以允许数据集通过。

时间: 2024-09-19 04:41:02

ADO.NET 和 ADO 的比较的相关文章

浅谈ADO.NET与ADO!!

ado 最近老是看到有网友问关于ADO.NET和ADO的区别和好坏问题,想想自己在刚接触.NET时确实也有此疑问,现将我的一点理解和体会写来,希望能对大家有点帮助! 其实大部分东西还是来自MSDN!! ADO 对于用本机代码编写的应用程序,ADO 为 OLE DB 数据提供程序提供基于 COM 的应用程序级别接口.与 ADO.NET 相似,ADO 支持各种开发需要,包括使用与关系数据库和其他存储区中的数据的活连接来创建前端数据库客户端和中间层业务对象.而且,像 ADO.NET一样,ADO可构建客

ADO.Net与ADO在数据内存中的差异讨论

ado|数据 数据的内存中表示形式 在 ADO 中,数据的内存中表示形式为记录集.在 ADO.NET 中,它为数据集.它们之间有重要的差异. 表的个数 记录集看起来像单个表.如果记录集将包含来自多个数据库表的数据,则它必须使用 JOIN 查询,将来自各个数据库表的数据组合到单个结果表中. 相反,数据集是一个或多个表的集合.数据集内的表称为数据表:明确地说,它们是 DataTable 对象.如果数据集包含来自多个数据库表的数据,它通常将包含多个 DataTable 对象.即,每个 DataTabl

在VB.NET中用ADO(不是ADO.NET)获取数据库中的所有非系统表名

ado|数据|数据库 '假设mCnnDB是个已打开某一数据库的ADO.Connection'获取数据库中的所有表名关键是用到ADO.Connection的OpenSchema方法'该方法返回一个只读的数据集,包括系统表和用户表.'因此,需要一个集合来保存其中的用户表    Public Function GetAllTableName() As System.Collections.ArrayList        Dim t As New System.Collections.ArrayLis

ado net-Ef和ado.net 数据问题

问题描述 Ef和ado.net 数据问题 列表页面我用的是ef查询出来 public ActionResult Index(FormCollection collection, int id = 1) { BLLOperateContext bll = new BLLOperateContext(); int count; int totlePageCount; IList list = bll.BLLSession.It_AdminBLL.GetPagedList(ref id, 10, o

ADO.NET:使用ADO.NET连接文本文件

try { // create a new ADOConnection to the text file through ODBC and an existing Data Source ADOConnection conn = new ADOConnection("Provider=MSDASQL;DSN=registrations;"); // create a DataSet Command that selects all the records from the regist

使用ADO封装类的数据库程序开发实例(上)

源代码运行效果图如下: 开发实例(上)-vc数据库编程实例ado"> 一.前言 用过ADO的人都知道, 调用ADO要处理很多"麻烦"的事情,如异常处理等,要写很多try - catch块. 有点不甚其烦.我干脆把常用的函数都封装起来,免去老是要写try - catch块的麻烦.做起来虽然没有什么技术含量,但也比较烦琐,所以只完成了一部分,且由于时间及个人水平有限,没有对封装的东西作全面测试,并必定有很多错误,但想到对某些朋友可能有用.所以先"捐"出来

ADO.NET 中的 XML 特性

ado|xml 毫无疑问,XML 及其一些相关技术(包括 XPath.XSL Transformation 和 XML Schema)是 ADO.NET 的基础.与 ADO 相比,ADO.NET 对象模型的互操作性得到很大的提高,而事实上,XML 正是为此发挥重要作用的关键元素.在 ADO 中,XML 只是一个用于保留断开连接的记录集的内容的(非默认)I/O 格式.而 XML 在 ADO.NET 的构建和交互方面的参与则深入得多.可以用以下几点来概括 ADO.NET 与 XML 的更强的交互和集

浅析ADO 事件模型

ado "ADO 事件模型"支持某些同步或异步的 ADO 操作,这些操作在其开始之前或完成之后能够引发事件."事件"实际上是对事件处理程序例程的调用. 操作开始前调用的事件处理程序用于检查或修改操作参数,此后可删除操作或使其完成.由于 ADO 2.0 支持异步操作,所以操作完成后调用的事件处理程序特别重要.例如,启动异步Recordset.Open 操作的应用程序在操作完成时,通过执行完毕事件来获得通知. 有两类事件: ConnectionEvents - 当连接的

ASP编程入门进阶(二十):ADO组件之修改数据记录

ado|编程|数据|ado 再来小总结一下:对数据库的操作无非就是显示记录,插入记录,修改记录,删除记录,查询记录. 并且在有关显示记录的时候还涉及到显示的输出格式.分页程序,那么再结合插入记录,一个简单的新闻系统,文章系统,留言系统,注册登陆系统不成任何问题. 下面就涉及到管理这块,需要对数据库记录进行修改. 首先,要修改哪条 修改,不是笼而统之的,而是要针对某条具体对相应修改.可以形象地说,就是对数据库表中的具体哪一行进行具体的修改.所以,这时候的记录集就有它特定的某个,当然这个主要还是由S