ADO与ADO.net不同

简介: ADO与ADO.net不同

引言


在我们进入.net平台以后,我们在做项目的时候就离不开ADO.net了,因为只要我们和数据库打交道,我们就必须利用它,然而我们在VB6.0的时代却一直和ADO做朋友,但是随者Web程序的兴起,我们的编程方式发生了重大的改变,然而传统的传统的数据库连线保存设计法无法适用于此类应用程序,这让ADO应用程序遇到了很大的瓶颈。所谓“时势造英雄”在此恰到的时机,ADO.net就应运而生了。


可能有很多同学对于ADO和ADO.net的一些基本概念不是很清楚,那么我就先简单的介绍一下这两位数据库界的大牛,然后在说明他们之间的关系。


ADO 简介


ADO (ActiveX Data Objects,ActiveX数据对象),它就是Microsoft 提出一个应用程序的接口(API),它的作用就是用来访问关系或非关系的数据库例如,如果您希望编写应用程序从DB2或Oracle数据库中向网页提供数据,可以将ADO程序包括在作为活动服务器页(ASP)的HTML文件中。当用户从网站请求网页时,返回的网页也包括了数据中的相应数据,这些是由于使用了ADO代码的结果。


20141129114617635.jpg

ADO.net简介

ado.net可让开发人员以一致的方式存取资料来源(例如 SQL Server 与 XML),以及透过 OLE DB 和 ODBC 所公开的资料来源。资料共用的消费者应用程序可使用ado.net 来连接至这些资料来源,并且撷取、处理及更新其中所含的资料,它利用.NET Framework资料提供者和DataSet(数据集)物件,来达到离线房屋内数据库。


作用:它提供了平台互用性和可伸缩的数据访问,ADO .NET增强了对非连接编程模式的支持,并支持RICH XML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。


20141129161308692.jpg

下面我就从以下四个方面来总结一个ADO和ADO.NET的区别:

20141129163052520.jpg


(1)数据在内存中的表示形式


在ADO中,数据在内存中的表示形式为记录集,而在ADO.net中的表示形式为数据集(DataSet),这两种形式有着很大的不同。


记录集就像单个的表,如果记录集中的数据来自多个数据库表,则它必须使用SQL语句JOIN进行查询,然后将从多个表中得到的数据结合到单个的结果表中,而数据集就是一个小型的数据库,可以有多个表,表和表之间有关系,这样我们可以通关主外键关系查询,可以存储更加丰富的数据结构。


另外,在ADO中,数据导航使用ADO的MoveNext方法顺序扫描记录集的行。而在ADO.net中,行表示为集合,因此可以像以此通过,任何集合那样依次通过表,或者是通过序号索引或主键索引访问特定信息。


(2)对数据库的访问


两者在对数据源不连接处理存在着比较明显的不同,在ADO.net中,在连接数据库以后将行数据读入数据集以后,然后在不与数据源连接的情况下使用它们,也就是说数据集和数据源是独立的,在ADO章是通过调用OLE DB提供程序与数据库通信的,在ADO.NET中是通过数据适配器(OleDbDataAdapter,SqlDbDataAdapter等)与数据库通信这将调用OLEDB提供程序或基础数据源提供的API。在ADO.net中,数据适配器允许控制将多数据集所做的更改传输到数据库的方式。


具体实现对数据库的访问:


(1)使用ADO Connection创建到数据库的连接


(2)执行SQL命令查询数据库表,得到RecordSet记录集


(3)对记录集进行所需的操作


(4)关闭数据库连接


通过ADO.net访问数据库


(1)创建数据库的连接


(2)执行SQL命令得到相关的数据集行


(3)填充数据行到DataSet中


(4)根据需要可反复讲得到的新数据行加入到DataSet中


(5)关闭数据库连接


(6)对DataSet进行所需的操作


  从上面的步骤中可以看出,ADO.NET通过引入DataSet数据集概念,改变了以往ADO的访问数据库模式,DataSet是完全不依赖于数据库的独立数据集,关闭数据库连接对数据的操作完全没有影响,实现了真正的非连接编程状态,彻底替代了RecordSet记录集。


(3)RecordSet  DataSet  DataReader


20141129171601808.jpg

(4)数据的共享和传输


在应用程序间传输ADO.NET数据集要比传输ADO连接的记录集容易的多,这是因为要将ADO连接的记录集从一个组件传输到另一个组件,则必须使用COM组封送,若要在ADO.NET中传输,则是利用数据集传输XML流。下面做一下比较


1、COM封送提供有限数据类型,该数据类型是用COM标准定义,而ADO.NET数据集是基于XML格式所以对数据类型没有限制,也就是说ADO.NET传送有更丰富的数据类型。


2、在传送大型记录集的时候,虽然两者都最大限度的降低了所传送的数据,但是ADO.NET不需要数据类型转换,所以比ADO更有优势。


3、在传输中防火墙会影响试传输不连接的ADO记录集的两个组件,防火墙通常允许HTML文本通过,但是防止系统级请求(如COM封送)通过,因为组件使用XML交互,所以允许数据集通过。


小结


ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用于建立基于客户端/服务器和 Web 的应用程序的主要功能。但是ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。众所周知.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADO和OLE DB接口,这也就是说ADO.NET和ADO是两种数据访问方式。

目录
相关文章
|
Python
一条龙操作有效解决PermissionError: [WinError 5] 拒绝访问的问题
一条龙操作有效解决PermissionError: [WinError 5] 拒绝访问的问题
2076 0
|
9月前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
本书介绍了如何将Python与Excel结合使用,以提升数据分析和处理效率。内容涵盖Python入门、pandas库的使用、通过Python包操作Excel文件以及使用xlwings对Excel进行编程。书中详细讲解了Anaconda、Visual Studio Code和Jupyter笔记本等开发工具,并探讨了NumPy、DataFrame和Series等数据结构的应用。此外,还介绍了多个Python包(如OpenPyXL、XlsxWriter等)用于在无需安装Excel的情况下读写Excel文件,帮助用户实现自动化任务和数据处理。
|
12月前
|
网络协议 网络虚拟化 数据中心
广播域与段间路由:详解网络隔离与通信机制
广播域与段间路由:详解网络隔离与通信机制
389 0
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
SQL 监控 测试技术
SQL现在到哪个版本及版本更新技巧与方法
SQL(Structured Query Language)作为数据库管理和操作的标准语言,随着技术的不断进步和数据库管理系统(DBMS)的持续发展,其版本也在不断更新和完善
1080 5
|
SQL 数据管理 BI
SQL 有哪些版本?
SQL 有哪些版本?
1101 4
|
存储 监控 算法
内存泄漏还是高性能?深度揭秘.NET垃圾回收机制
【8月更文挑战第28天】垃圾回收是.NET框架中自动化内存管理的关键机制,它通过分代收集算法自动清理不再使用的对象,简化了开发者的内存管理工作。本文深入解析了垃圾回收器的工作原理、对象内存分配策略及优化技巧,并介绍了多种监控工具,帮助提升.NET应用性能与稳定性。掌握这些知识将使开发者能够更高效地管理内存,提高应用程序的运行效率。
176 3
|
SQL 数据处理 数据库
深入解析SQL中的MERGE语句及其重要性
【8月更文挑战第31天】
412 0
|
区块链 Python
Python脚本打包 exe,auto-py-to-exe来帮你!
Python脚本打包 exe,auto-py-to-exe来帮你!
1049 0
|
数据库 SQL Oracle
数据库漫谈-sybase
sybase就是“system”加“database”