DAO/RDO/ADO,ODBC,OLEDB其间的关系

DAO/RDO/ADO,ODBC,OLEDB之间的关系

 

  DAO(Data AccessObjects)数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式---应用的专一性      

RDORemote Data Objects远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问JetISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL ServerOracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。---无疑是在odbc基础上的

ADOActiveX Data ObjectDAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"DAO RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。 作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。 ADO涉及的数据存储有DSN(数据源名称)ODBC(开放式数据连接)以及OLE DB三种方式。---可以说是对odbcoledb这些系统级的编程接口的汇接,并对DAO,RDO这些应用级的编程接口的升级吧。(我们再下一遍文章中将详细的讲述VB基于ADO的数据访问)。

ODBC (Open Database Connectivity)开放数据库互连) 是一些标准规范符合规范的数据库就可以通过SQL(结构化查询语言)编写的命令进行操作.理解ODBC是种数据库互连标准就行了,WINDOWSODBC配置,只是对数据库进行系统中登记操作一样,不起任何数据服务作用.他也是ADO的前身!

OLE DB Microsoft 的一个战略性系统级编程接口,用于管理整个组织内的数据。OLE DB 是建立在 ODBC 功能之上的一个开放规范。ODBC 是为访问关系型数据库而专门开发的,OLE DB 则用于访问关系型和非关系型信息源,例如主机 ISAM/VSAM 和层次数据库,电子邮件和文件系统存储,文本、图形和地理数据以及自定义业务对象。

OLE DB 定义了一组 COM 接口,对各种数据库管理系统服务进行封装,并允许创建软件组件,实现这些服务。OLE DB 组件包括数据提供程序(包含和表现数据)、数据使用者(使用数据)和服务组件(处理和传送数据,例如,查询处理器和游标引擎)。

此外,OLE DB 包含了一个连接 ODBC 桥梁,对现用的各种 ODBC 关系型数据库驱动程序提供一贯的支持。---号称取代odbc,但也兼容odbc

这么说吧,我们操作ADO,ADO则访问OLEDB(当然可以访问其他的,只要符合ADO接口),OLEDB查询ODBC(也可以不用找他)得到数据接口操作数据,也就是说OLEDB位于ODBC层与应用程序之间. 你的ADO调用先被送到OLEDB,然后再交由ODBC处理. 你也可以直接连接到OLEDB.

下面我们说一下对于access数据库如何直接连接到OLEDB:(至于对与SQL的连接方法,等我学了在补充)

先创建一个对象:

Dim objCn As New Connection

然后采用下面的连接字符串:

objCn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;" & _

                            "DataSource=" & App.Path & "\实例1.mdb"

 objCn.Open

以上是最近学习《举一反三》遇到的一些概念性的问题,具体的操作步骤会在接下来的整理中呈现给大家!

 

4楼huanjileaimeidan昨天 20:27
一起加油!
3楼wangxuhebeibd昨天 20:09
看得真快。 就是有一点,我看不下去。
2楼jiuqiyuliang昨天 20:08
图文并茂,加深理解
1楼sunliduan昨天 20:05
一起加油!