ADO.NET (二)—— ADO和ADO .NET对比

ADO.NET (二)—— ADO和ADO .NET对比

我们知道ADO.NET的两大核心组件分别是Data Provider和DataSet。如果说

DataSet是ADO.NET的心脏,那么Data Provider绝对是ADO.NET的左臂右膀。

Data Provider提供了访问外部数据数据源的可能性,而且外部的数据源是多样的。本

文将详细说明.NET数据提供程序的作用以及如何访问不同的数据源。

详情细看《ADO.NET技术》

           

对ADO和ADO.NET的详细比较:

1、可伸缩性:

a)   ADO:因为在ADO中,默认情况下是使用连接的Recordset对象、数据库锁定

和活动数据库连接,以长时间地争夺有限的数据库资源;

b)   ADO.NET:对数据库数据进行断开连接的访问,无需进行长时间地维护数据库锁定

或者有效数据库连接,没有对有限的数据库资源的争夺。

2、 可编程性:

a)   ADO:所有Recordset字段数据类型都是COM Variant数据类型,并通常和数据

库表中的字段名相对应;

b)   ADO.NET:使用XML的强类型化的编程特征。数据是自我描述的,因为代码项

名对应于代码所处理的真实问题。DataSet和DataReader对象中的数据是强类型化的,使

代码更容易阅读和编写;

3、断接访问

a)  ADO:由Recordset提供,但必须显式编码。对于Recordset对象,在默认情况

下是通过调用OLE DB提供程序来和数据库通信;

b)  ADO.NET:对DataAdapter对象使用标准化的调用,来和数据库通信。该对象可

以和OLE DB数据提供程序或直接与SQL
Sever数据提供程序通信;

 

4、表之间的关系:

a)   ADO:需要对单个结果表中的多个数据库表使用JOIN查询来组装数据,并提供

层次结构记录集,不过它们很难使用;

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

个DataTable对象中的行关联起来;

 5、驻留留内存数据表达方式:

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

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

6、   数据导航:

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

b)  ADO.NET:DataSet使用导航范例对一个表中的行进行无序访问。对该数据的

访问类似于访问集合或数组中的数据。这对于DataTable的Rows集合来说是可能的,它允

许通过索引来访问行。按照关系从一个表中的行导航到另一个表中的相应行;

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

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

求,如COM编组;

b)   ADO.NET:ADO.NET支持这一功能,因为ADO.NET的DataSet对象使

用XML,XML可以通过防火墙;

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

a)   ADO:使用COM编组以发送断开连接的数据集,它只支持由COM标准定义的

数据类型。需要进行类型转换,这要求使用系统资源;

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

小结:

进行对比之后,自己的思路更加的清晰明了,但是更多的还是要到实践中去掌握和了解。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-24 04:05:26

ADO.NET (二)—— ADO和ADO .NET对比的相关文章

我与ADO.NET二三事(2)

继上篇开始,这里主要再次精简.因为大家已经熟悉了主要思想以及它的工作方式.那么这里提供的案例改动会很大.上篇的DatabaseCommand***均是为了大家能够轻松的理解所临时编写的.这次提供的接口会有很大变动,以及会有一些新的内容,比如执行Reader是修改的Connection状态,同时不上没有提供异步功能的案例.我将一步一步的带领大家走入. 1.NoCountModel 1 public enum NoCountModel 2 { 3 /// <summary> 4 /// 默认当前连

我与ADO.NET二三事

  天气渐冷,闲来无事就把业余时间自己使用的数据访问库凉一凉.这个库本人自己使用了2年多,主要用于个人学习时需要操作数据库时使用,非组织和商业性质的使用.记得上学的时候,在网络上看到SqlServerHelper操作ADO.NET甚方便,一下子就着了迷不管学习还是工作都会带上这个Class,甚至我的U盘里面也会存上这个Class,哈哈.随着工作经验和沿街的开阔,我渐渐的有了自己的ADO.NET操作习惯以及封装使用方式.因此就写了Basic.Data.dll,言归正传. 1.Database:主要

ADO.NET 二(Connection)

C# 语言中 Connection 类是 ADO.NET 组件连接数据库时第一个要使用的类,也是通过编程访问数据库的第一步. 接下来了解一下 Connection 类中的常用属性和方法,以及如何连接 SQL Server 数据库. Connection 类概述 Connection 类根据要访问的数据和访问方式不同,使用的命名空间也不同,类名也稍有区别,在这里我们使用的是 SqlConnection 类,以及微软提供的MSSQLSERVER数据库. SqlConnection 类中提供的常用属性

Oracle+Ado.Net(二)

功能添加: 在BaseDal中添加了公共的新增,更新功能; 在Model层中添加以下代码: /// <summary>        /// 标识自增长        /// </summary>        private bool isAutoId = true; public bool IsAutoId        {            get { return isAutoId; }            set { isAutoId = value; }     

菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类

1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Data.SqlClient; 5 using System.Data; 6 using Microsoft.Win32; 7 8 namespace SqlHelp 9 { 10 /// <summary> 11 /// 定义SqlParameter所需的参数对象 12 /// </summary> 13

Skyline(6.x)-Web二次开发-多窗口对比

GitHub上获取源码 1.打开个3D窗口 一个页面加载多个TerraExplorer3DWindow和SGWorld等只有第一个能用(即使用iframe也是一样) 所以我决定打开两个新页面实现多窗口对比,然后我在<主页面>使用window.open打开了两个<新页面>,但这两个新页面使用SGWorld时居然在主页面(使用window.open的页面)产生了效果,感觉和以前的一个页面加载多个TerraExplorer3DWindow 和 SGWorld效果一样了!!! 然后经过测试

Delphi 原生ADO(二)

我发现很多朋友在开发数据库时都使用 Delphi 自带的 ADO 组 件 或 Diamond ADO,其实在 Delphi 中使用原生 ADO 接口也是十分方便和有效的.我使用原生 ADO 开发项目已有很长一段时 间,也回答过一些朋友类似的问题,现在把自己的一点心得与大家分享,班门弄斧,只是希望能对大家有所帮助.当然,这帖子也是原生的,不是转贴的.一.优点1. 大家知道 Delphi 对 ADO 接口进行了一番包装后形成了 ADOExpress,我想 Borland 的主要目的还是想与自己的数据

ADO.NET 技术

ADO.NET 技术 前言: 作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角 色.本文将从宏观的角度来探讨ADO.NET,和大家一起了解ADO.NET来龙去脉以及ADO.NET 的主要组成部分. 一.ADO.NET是什么? 简单的说,ADO.NET是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的 方式与数据交互的技术.对于ADO.NET来说,可以处理数据源是多样的.可以是应用程序 唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的

.NET Core中ADO.NET SqlClient的使用与常见问题

一.简介 在很多要求性能的项目中,我们都要使用传统的ADO.NET的方式来完成我们日常的工作:目前有一些网友问有关于.NET Core操作SQL Server的问题在本文中解答一下. 本文旨在指出,在.NET Core中使用ADO.NET SqlClient操作SQL SERVER数据库时的一些常见的问题,在本文的第三部分,如果只关心解决问题,请跳过第两部分进行阅读. 二.使用ADO.NET 首先建立好一个ASP.NET MVC Core Project 或 .NET Core Class Li