自学内容:
尽管RDO的对象模型并不复杂,也可以用于访问任何符合ODBC标准的数据库,但是,一方面,RDO是专门针对SQL
Server和Oracle两种数据库优化的,对其他数据库的存取性能没有保证;另一方面,微软的策略是建立一种新的,可以访问包括ODBC数据源在内的任何数据源的存取技术标准,所以,RDO很快就被证明是一种过渡性的技术:VB4首次出现、VB5中真正完善,到VB6时,已经推荐使用ADO替换RDO。
ADO我们将在6.4节详细介绍,本节只对MFC对象模型、DAO和RDO作简要的介绍。下面的内容学生可以自学。
1 MFC对象模型
MFC数据库对象接口是在ODBC API上提供一个薄层:即通过几个对象实现对ODBC API函数的封装如表6-1。CDatabase 类封装了数据源连接,而语句和结果集合并到CRecordset
类中。是适用使用VC开发数据库应用的对象接口。
表6-1 MFC ODBC 类
类 |
作用 |
Cdatabase |
由环境和对数据库的连接组成,维护连接的以上选项 |
CDBException |
Cexception 的子类,提供带有例外数据的数据库状态变量 |
CfieldExchange |
由记录域交换使用的常量定义和数据组成 |
ClongBinary, CbyteArray |
维护BLOB 数据类型 |
CRecordset |
由ODBC 语句的数据和结果集/游标组成 |
MFC只做了些普通工作使用户从ODBC的复杂性中解脱出来,但所做的这点已有巨大的影响。MFC简化数据库访问依靠建立一个两单元的模型:数据库和记录集。使用这两个单元,各种数据库已经完全可以访问,然而,这一抽象仍很简单,使用从ODBC
获取的知识,两个单元能完成纯ODBC代码所做的工作,并使客户端代码复杂性有显著降低。像许多程序单元一样,程序降低复杂性往往具备更少的漏洞和更容易的维护。
2 数据访问对象DAO
数据访问对象是数据源的一个对象接口,表现为一系列描述不同级别的数据层次设计的对象。DAO是用于Microsoft Jet数据引擎的对象接口。本地Jet数据库是Access数据库的起源,DAO为其作了优化。
先前,使用DAO来访问SQL Server或其他数据库的每个程序都需要Jet引擎在运行。从DAO3.5版开始,DAO有了一种连接模式ODBCDirect,该模式直接建立到ODBC数据源的连接,而不用在计算机内存里加载MS
Jet数据库引擎。由此,数据库应用程序能更快速和更高效的访问远程数据库。
使用ODBCDirect的另一优点是可以使用ODBC的特殊功能,比如批更新(batch update)(同时发送几条语句到服务器)或异步查询(asynchronous
query)(异步地执行查询)。
除了易于学习之外,DAO的最大特点是只读性能高,查询结果集的返回和处理都非常快(甚至比RDO和ADO都快)。
3 远程数据对象RDO
为了提高对SQL Server和Oracle这两种大型数据库的存取速度,微软专门提供了一种位于ODBC Driver Manager之上的薄层:远程数据对象。这个薄层的实质是ODBC
API的对象化,也就是将标准的C函数"包裹"成便于VB、VC等开发工具调用的对象模型。
与DAO相比,这两个对象接口在功能上存在很大不同。主要因为它们为不同目的而设计。DAO设计用于访问本地数据库,尤其是Access数据库;RDO设计用于访问远程数据哭,如SQL
Server和Oracle。表6-2比较了DAO和RDO功能。
表6-2 DAO 和RDO功能比较
MS Jet 工作空间的DAO |
RDO |
主要为本地Access数据库 |
主要为访问在远程服务器的数据 |
使用Microsoft Jet,产生很大开销,从而需要更强的计算机的计算机上 |
不使用Jet,而使用非常薄的层。能运行在最低配置 |
不能访问服务器端游标 |
能访问服务器端游标 |
不支持异步访问(除非ODBCDirect QueryDef 对象) |
支持异步查询 |
DAO2.5工作在16位操作系统上,更高版本只工作只工作在32位操作系统上 |
在32位操作系统上 |
也许,使用RDO和使用DAO编程的不同是模型设计的结果。DAO为ISAM (索引顺序访问方法,Index
Sequential Access Method)数据库如Access而设计;但RDO为关系数据库而设计。DAO支持数据字典的创建和修改,而RDO依靠服务器工具。但是,用户能运行语句以创建、修改和删除表和数据库。
与ADO相比,RDO提供了前所未有的连接和查询速度,并且使得VB,VC程序可以不必登记ODBC数据源,就可以创建与后台数据库的连接,即所谓的"无数据源连接"(DSN-Less
Connection)。
尽管RDO的对象模型并不复杂,也可以用于访问任何符合ODBC标准的数据库,但是,一方面,RDO是专门针对SQL Server和Oracle两种数据库优化的,对其他数据库的存取性能没有保证;另一方面,微软的策略是建立一种新的,可以访问包括ODBC数据源在内的任何数据源的存取技术标准,所以,RDO很快就被证明是一种过渡性的技术:VB4首次出现、VB5中真正完善,到VB6时,已经推荐使用ADO替换RDO。
|