ODBC、OLEDB、DAO、RDO、ADO的区别(转载)
时间:2010-10-09 来源:Ryan_j
演进路标(从早到晚):ODBC——OLE DB——DAO——RDO——ADO;
OSI模型层次看(非绝对,部分有交叉):最底层数据源——ODBC——OLE DB——RDO、DAO、ADO——应用程序。
一、ODBC
ODBC全称Open Database Connectivity,ODBC建立一组规范(标准),并提供一组对数据库访问的标准API函数接口。ODBC包括ODBC管理器、ODBC API、ODBC驱动管理器、ODBC数据库驱动管理器四个部分。ODBC可以访问应用程序用户具有其ODBC驱动程序的任何本地或远程数据源,一般是以 SQL Server、Oracle等关系数据库作为访问对象。如果使用的是基于Microsoft Jet(.mdb)的数据库,使用下面的ADO比Microsoft Access ODBC驱动程序更有效。
二、OLEDB
OLE DB是基于COM技术的一组接口规范,是系统级数据访问接口,OLE DB提供通用数据访问的方式,不管数据是以何种形式存储,可以对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取的一种技术。用来访问各种数据源,如ORACLE、SQL Server、Access、Excel等等。而且相比下文的ADO通用数据访问方 式,OLE DB性能要更强一点。
三、DAO
DAO全称DATA ACCESS OBJECTS,是基于MICROSOFT的JET 技术设计,面向对象的数据访问接口,最早在VB中使用,DAO可以访问的数据库有:
1、用数据库引擎版本为 1.x、2.x 和 3.0 的 Microsoft Access 或 Microsoft Visual Basic 创建的、使用 Microsoft Jet 数据库引擎的数据库。
2、可安装的ISAM 数据库,包括:dBASE III、dBASE IV、dBASE 5.0、Paradox 3.x、4.x 和 5.x 版。
3、开放式数据库连接(ODBC)数据库,包括但不仅限于Microsoft SQL Server、SYBASE SQL Server 和 ORACLE Server。若要访问ODBC数据库,必须具有希望访问的数据库的适当ODBC驱动程序。
继承层次结构
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Data.Common.DbCommand
System.Data.Odbc.OdbcCommand
System.Data.OleDb.OleDbCommand
System.Data.SqlClient.SqlCommand
System.Data.OracleClient.OracleCommand
4、Microsoft Excel 3.0、4.0、5.0 和 7.0 版工作表。
5、Lotus WKS、WK1、WK3 和 WK4 电子表格。
6、文本文件。
四、RDO
RDO全称Remote Data Objects,翻译就是远程数据对象访问,以ODBC为基础,依赖ODBC API、选定的ODBC 驱动程序以及后端数据库引擎实现大部分的智能和功能,RDO具备基本的ODBC处理方法,所以可以直接执行大多数ODBC API函数。RDO是从DAO派生的,同DAO最大的不同在于其数据库处理模式。DAO是针对Records和Fields,而RDO是按照Rows和 Columns来处理。也就是说DAO是ISAM模式,RDO是关系模式。此外DAO是访问Access的Jet引擎 (Jet是ISAM)的接口,而RDO则是访问ODBC的接口。可见,RDO是综合了DAO/Jet、ODBC等优点。
五、ADO
ADO(ACTIVEX DATA OBJECTS)——ADO是基于OLE DB(ActiveX技术)技术设计的应用层数据访问接口,对OLE DB接口进行封装,所以使用中仍然是通过OLE DB桥接数据库。所以,ADO同OEL DB一样提供了通用数据访问功能,支持关系数据库和非关系数据库的访问。ADO功能上对DAO和RDO进行了综合演绎,就是说有合并也有取消优化等等。
综 合:
所以从实用角度,ADO最好,因为它的层次也是最高