RDO 与 Microsoft Jet/DAO 的对比

使用远程数据对象的方式基本上与使用 Microsoft Jet 数据库引擎数据访问对象 (DAO) 的方法类似,RemoteData 控件也与 Data 控件类似。使用 RDO 可以提交查询、创建结果集或游标,以及用与数据库无关的、面向对象的代码处理查询结果。

使用 RemoteData 控件,可以在创建的窗体中使用能够被 Data 控件识别的所有绑定控件;还可以用很少或几乎不用代码处理结果集。

对现有的使用 DAO 及 Data 控件的应用程序作些稍微的改动,即可将其转换成使用 RDO 和 RemoteData 控件。它们之间有一些区别,然而,由于实现和设计了的 RDO 用于关系数据库,因此 RDO 并没有它自己的查询处理程序;它依靠数据源来处理所有的查询,并创建结果集。数据对象本身是由 ODBC 驱动程序所返回的结果集和游标来建立的。

有时可能没有必要将已有的 DAO/Jet 应用程序转换为 RDO,因为 ODBCDirect 将 DAO 通过 RDO,而不是 Jet。如果应用程序没有使用 DAO ISAM 对象及其方法(例如表类型的 Recordset 对象和 Seek 方法)或其它的 ISAM 编程方法,那么,通过少许改动便可将其转换成 ODBCDirect 方式,所需的改动甚至比转换成 RDO 还少。

详细信息   有关 ODBCDirect 的详细信息,请参阅本章的“RDO 与 Microsoft Jet ODBCDirect 比较”,以及第十章的“使用数据访问对象”中的“使用 DAO 和 ODBCDirect进行远程数据访问”

下表列出了 RDO 2.0 对象及其等价的 DAO/Jet 对象:

远程数据对象及其等价的 DAO/Jet 对象

RDO 对象 等价的 DAO/Jet 对象
rdoEngine DBEngine
rdoError Error
rdoEnvironment Workspace
rdoConnection Database
rdoTable TableDef
未实现 Index
rdoResultset Recordset
未实现 表类型
键集类型 动态集类型
静态类型(r/w) 快照类型 (r/o)
动态类型 (无)
仅向前类型 仅向前类型
(无游标的) (无)
rdoColumn Field
rdoQuery QueryDef
rdoParameter Parameter
未实现 Relation
未实现 Group
未实现 User

远程数据对象使用行和列的概念,而不是记录和域的概念,后者通常为关系数据库的术语。查询以结果集的形式返回数据,结果集可以包括零个或多个数据行,每行又可包括一个或多个列。DAO 需要使用游标访问数据,而 RDO 允许创建无游标的结果集,所需的资源大大少于游标。

有些 DAO 对象、方法和属性被设计用来支持和实现 Jet 的 ISAM 结构以及可安装的 ISAM 数据库。例如,可以使用 Index 对象和 Seek 方法来管理 ISAM 索引,并用索引进行定位行。因为 RDO 和关系数据库以完全不同的方式管理索引,所以那些对象和方法都是不需要的。

通过 DAO 方法和属性,DAO 也支持数据库模式的创建、修改、参照完整性 (RI) 以及安全性。RDO 不支持任何形式的 RI、安全性或模式修改,因为服务器系统所提供的工具和实用程序完全能够支持这些功能。

还可以运行 RDO 生成表查询,或执行动作查询,用原始 SQL 语句操作创建、修改及删除数据库或表。也可以执行复杂的存储过程,从而管理数据库模式或执行维护操作,这对于 RDO 来说是不可能的。