前面也分别对ADO和ADO.NET进行概述,从前面的两篇文章来看,我们都知道ADO与ADO.NET 都是一种数据库访问的方式,都是从最基本的Connection(连接)对象开始的,可以说ADO.NET是ADO的一种改进版,在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对数据类型有限制要求。