使用远程数据对象的方式基本上与使用 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 来说是不可能的。