前面也分别对ADO
和ADO.NET
进行概述,从前面的两篇文章来看,我们都知道ADO
与ADO.NET
都是一种数据库访问的方式,都是从最基本的Connection
(连接)对象开始的,可以说ADO.NET
是ADO
的一种改进版,在ADO
的基础之上ADO.NET
统一了数据容器类编程接口,无论你打算用哪种编写哪种应用程序,都可以通过同一组类来处理数据 。
在ADO
的基础上,ADO.NET
做了很多的改进,以下是它们区别:
1.对象不同:
ADO
使用的是OLEDB
接口并基于微软的COM
技术,而ADO.NET
有自己的ADO.NET
接口并且基于微软的.NET
体系架构。
2.存储对象不同:
ADO
以Recordset
记录集形式进行存放,ADO.NET
是以DateSet
数据集形式进行存放。记录集看起来更像一个单表,如果要让Recordset
以多表的方式就必须在SQL
中进行多表连接,反之,数据集是一个或多个表的集合,它就相当于是内存中的一个数据库,数据库内存放的是DataTable
对象,也就是我们平时所说的表。
3.连接方式不同:
ADO
在与数据库连接后,会一直保持连接,直到断开(为连接而设计)。而ADO.NET
读取完所需要数据之后,会自动断开连接。当需要更新数据时,会再次连接。也就是说ADO.NET
读取数据库中的数据有两种方式:一种是基于在线的连接方式,一种是基于离线的非连接方式。为什么会有这两种方式呢?我想主要是由于ADO.NET
取消了以往的Recordset
对象,而采用DataSet
的缘故吧。
Dataset
,它相当于是内存中的一个数据库,它是不依赖与数据库的独立数据集合,所谓独立就是说,即使是断开数据链路或者是关闭数据库,它仍然是可以使用的。Dataset
内部是用XML(可扩展标记语言)来描述数据的。在访问数据的时候,ADO.NET
会利用XML
制作数据的一份副本,也就是说只有在这段时间内是需要在线的。而在ADO
中,xml
只不过是一种输入和输出格式。
此外:由于Dataset
内部是用XML
(可扩展标记语言)格式来描述数据的,所以ADO.NET
对数据类型没有限制。而Com
技术要求使用的数据类型必须是符合Com
规范,所以ADO
对数据类型有限制要求。