Rdo对象模型

远程数据对象提供了一系列的对象,用来满足远程数据库访问的特殊要求。在ODBC API和驱动程序管理器之上,RDO实现了很薄的一个代码层,用来连接、创建结果集和游标,并且使用尽可以少的工作站资源执行复杂的过程。如果代码创建了ODBCDirect Workspace对象,那么RDO也被DAO访问,这在上一节中已经介绍过了。
利用RDO,应用程序不需要使用本地的查询处理程序即可访问ODBC数据源。这意味着,在访问远程数据库引擎时,可以获得更好的性能与更大的灵活性。
通过使用RDO,可以创建简单的无游标结果集或更复杂的游标;可以执行查询并处理任意数量的结果集;可以执行包括数据操作或数据定义运算在内的动作查询;可以限制返回或处理的数据行数;还可以在不妨碍执行查询的情况下,监视远程数据资源产生的所有信息和错误;RDO还支持同步、异步或事件驱动的异步处理,因此,即使在执行冗长的查询或重新定位当前指针时,应用程序也不会被阻塞。
RDO对象和集合的属性描述了数据库部件的特征,也描述了用来操纵它们的方法。在此总体框架下,可以在对象和集合之间建立联系,这些联系表示了数据库系统的逻辑结构。RDO的对象模型如图所示:

除了rdoEngine对象外,每个对象都保存在一个相关的集合中。在首次访问实初始化RDO时,RDO自动创建一个rdoEngine和缺省的rdoEnvironments(0)实例。
远程数据对象编程模式与数据访问对象(DAO)编程模式在很多方面类似。但它的重点集中在处理存储过程及其结果集上,而不是仅用在ISAM编程模式的数据访问检索方法上。下面逐一介绍RDO对象模型中的各个对象。
1.RdoEngine对象
这个对象是RDO对象模型中最基本的对象。在应用程序的第一次访问RDO时,自动创建rdoEngine对象。这个对象不能由用户显式地创建或声明。RdoEngine对象和DAO的DBEngine对象类似。
2.RdoError对象
RdoError对象用于处理RDO所产生的所有的ODBC错误和消息,当错误发生时,这个对象自动被创建。RdoError对象和DAO的Error对象类似。
3.RdoEnvironment对象
RdoEnvironment对象为特定的用户名定义了连接及事务作用域的一个逻辑集合。包括打开的和分配的(但未打开)连接,提供了并发事务的机制,并且为数据库的数据操作语言(DML)提供了安全的上下文,在应用程序第一次访问RDO时,自动创建了一个RdoEnvironment对象并把它加到RdoEnvironments集合中,用RdoEnvironment(0)来引用它。这个RdoEnvironment对象是缺省的对象,也可以在程序中显式地创建RdoEnvironment对象,如果程序中没有另外创建新的RdoEnvironment对象,应用程序使用RdoEnvironments(0)。
用rdoEngine的rdoCreateEnvironment方法来创建一个新的RdoEnvironment对象:
var=rdoEngine.RdoCreateEnvironment(Name,UserName,Password)
其中Name参数是RdoEnvironment对象的名字,UserName和Password参数分别是连接ODBC数据源的用户名和密码。它们是RdoEnvironment对象的属性。
RdoEnvironment对象和DAO的Workspace对象类似。
4.RdoConnection对象
RdoConnection对象表示远程数据源和该数据源上特定的数据库之间打开的一个连接,或者是一个已分配但仍未连接的对象,该对象可用于随后建立的一个连接。
可以用RdoEnvironment对象的OpenConnection方法来创建一个RdoConnection对象并建立一个连接。
Connection=rdoEnvironment.OpenConnection(dsname[,prompt[,readonly[,connect[options]]]])
RdoConnection对象和DAO的Connection对象类似,因此,上面这个方法的参数含义和前面介绍的一样。
例如,下面的语句展示了应用程序和数据源WorkDB建立一个连接,连接时提示用户输入用户名和密码:

以上讲的都是有DSN的连接,用RDO还可以创建没有DSN的连接。创建没有DSN的连接可以简化客户应用程序的设置和安装、加快连接速度、提高安全性。创建没有DSN的连接时,必须把OpenConnection的dsName参数设置为空串,而且在Connect串中,DSN参数必须在SERVER和DRIVER参数之后。例如下面的语句创建一个没有DSN的连接:

RdoConnection对象和dao的Database类似。
5.RdoTable对象
RdoTable对象表示一个基本表或SQL视图的存储定义。使用这个对象可以管理数据库的结构。当已经和数据源建立了连接之后,数据源中的每个基本表或SQL视图都成为一个RdoTable对象而加入到RdoTables集合中。添加表、删除表或修改表的结构就是对RdoTable对象的操作,如下面代码列出了数据源中的所有表的名字:

6.RdoResultset对象
RdoResultset对象表示运行一个查询所产生的数据行。这个对象是RDO编程中最常用的对象。当执行一次查询时,查询结果就放在结果集中。一个结果集可以包含数据库中一个或多个表中的字段。根据游标类型的不同,可以有4种不同类型的RdoResultset对象:
(1)记录只能向前移动的结果集(Forward Only)。在这种结果集中,每一行数据都能访问到,但是记录移动只能使用MoveNext方法来从前往后移动。
(2)静态类型的结果集(Static-Type)。它可以用来查找数据或产生报表的记录的一个静态拷贝。如果数据源能够修改,那么静态结果集也能被修改。
(3)键集(Keyset-Type)类型的结果集。这种结果集可以包含可修改的行,在这种结果集中移动是不受限制的。这种结果集可以动态地添加、修改和删除记录。它的成员是固定的。
(4)动态类型的结果集(Dynamic-Type).这种结果集可以包含可修改的行,可以动态地添加、修改和删除记录,而且,它的成员是不固定的。
可以用rdoQuery对象或rdoConnection对象的OpenResultset方法来创建一个RdoResultset对象。
在创建了RdoResultset之后,就可以访问其中的数据了。在处理结果集时,需要注意以下几点:
(1)如果该结果集以游标的形式创建,必需尽快将结果置入结果集,因为游标所取得的数据行和页可能被远程数据库引擎锁定。直到定位到最后一行时该结果集才算完成置入。
(2)在很多情况下,无游标的结果集更为有效。RdoResultset对象的功能以满足需求为宜,不要具有多余的特性。例如,如果并不需要使用游标修改数据,就不要请求允许更新的结果集。如果仅仅要置入到一个列表框中,可以任意滚动的游标也是不必要的。
(3)考虑使用无游标的结果集和动作查询来执行更新。在很多情况下,这种方法能够提高性能。尽管实现起来更复杂一些,在不能直接访问基本数据时,可以采用这种方法。
(4)尽可能地使用异步操作和事件过程,以避免应用程序被锁死,至少能够减少这种可能性。也可以异步处理Move方法,例如使用MoveLast,防止在置入到结果集时被锁死。
(5)复杂的结果集处理创建几个小的结果集,这常常会使速度更快,而且可以更好地管理系统资源。
(6)尽可能从存储过程产生结果集,因为这样可以提高服务器、网络和工作站的效率,并使应用程序的开发更为简单。
(7)从连接上断开已有的,以客户端的批处理游标的形式创建的RdoResultset对象。可以继续使用Edit或AddNew方法修改数据。当准备将所作的修改传回数据库时,可以将其ActiveConnection对象设置为一个打开的rdoConnection对象,从而将RdoResultset关联到一个打开的连接上。
RdoResultset对象和DAO的Recordset对象类似。
7.RdoQuery对象
RdoQuery对象是一个查询SQL定义,可以包括0个或多个参数。可以用rdoConnection对象的CreateQuery方法来创建一个新查询,如:

8.Rdocolumn对象
Rdocolumn对象表示具有公共数据类型和公共属性的一系列数据。这个对象是rdoTable、rdoQuery、rdoResultset对象的子对象。可以使用该对象的"Value"属性来访问某一列的值,也可以使用该对象的"Type"属性或"Size"属性来修改数据库中表的结构。
Rdocolumn对象和DAO的Field对象相似。
9.RdoParameter对象
RdoParameter对象对象表示与rdoQuery对象关连的一个参数。查询参数可以是输入、输出或输入输出参数。这个对象在进行带参数查询时自动创建。可以用rdoParameter对象的"Direction"属性来设置参数类型:输入参数(rdParamReturn Value)。例如下面的代码执行一个带有4个参数的SQL语句。

10.RdoPrepareStatement对象
这个对象预先定义了一个查询。它已经过时,只是为了保持与以前的RDO版本兼容才保留这个对象。在RDO2.0之后,应该使用rdoQuery对象。

时间: 2025-01-02 03:44:38

Rdo对象模型的相关文章

ATL COM和ADO

最近我在NIIT.Bangalore做一个在线银行工程.这个工程几乎是用VB编写,仅有一小部分涉及ATL组件,仅仅能教会我们编写分布式应用程序.我编写的一个中间层组件用到了ATL和ADO来查询后端(SQL Server),部分代码展示在这里. 我假设读者懂(至少了解)ATL 的 COM 编程和 VB 的 ADO 编程 什么是ADO? ADO是 ActiveX数据对象(ActiveX Data Object)的缩写.ADO使用OLEDB数据支持提供了一个面向对象的访问数据源的接口,它是DAO an

Dao对象模型

DAO提供了两种不同的对象模型,一种对象模型是通过Jet引擎来访问数据,如下图所示.另一种对象模型是通过ODBCDirect来访问数据.这两种对象模型都是层次结构的.现在分别对这两种对象模型进行介绍. DBEngine是一个基于对象,它包含了两个重要的集合(Collection),一个是Errors集合,另一个是Workspaces集合.对DAO的操作总会产生一些错误,每产生一个错误,DAO就生成一个Error对象,这些Error对象都放在Errors集合中,可以用Errors.Count来计算

ado对象模型

ADO对象模型定义了一组可以编程对象,可以实现OLE DB的几乎所有的功能.ADO对象模型中包含了7个对象: ●Connection对象 ●Command对象 ●Parameter对象 ●Recordset对象 ●Field对象 ●Property对象 ●Error对象 ADO对象模型中还包含了3个集合: ●Fields集合 ●Properties集合 ●Errors集合 它们之间的关系如下图: 1.Connection对象 Connection对象用来与数据源建立连接.执行查询以及建立事务处理

ADO,OLEDB,ODBC,DAO,RDO的区别说明_数据库其它

一 ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口).这些API利用SQL来完成其大部分任务.ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC. 二 DAO:数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Mic

Crystal 三种报表解决方案大对比:.NET 对象模型,报表应用服务器对象模型,水晶企业对象模型

对象|服务器|解决 概述 对于使用 .NET 平台的 Web 应用程序开发,Crystal Decisions 为开发者提供了三种愈加高级的报表对象模型: 1. 水晶报表 Visual Studio .NET 版 (.NET) 对象模型:捆绑在微软 Visual Studio .NET 和水晶报表 9 开发者版及高级版中. 2. 新增的报表应用服务器 (RAS) 对象模型:捆绑在水晶报表 9 开发者版及高级版中. 3. 水晶企业 (Crystal Enterprise) (CE) 对象模型:在水

JavaScript Window浏览器对象模型方法与属性汇总

  本文给大家汇总分享的是JavaScript Window浏览器对象模型方法与属性,十分的细致全面,这里推荐给大家,有需要的小伙伴可以参考下. Window 对象 所有浏览器都支持 window 对象.它表示浏览器窗口. 所有 JavaScript 全局对象.函数以及变量均自动成为 window 对象的成员. 全局变量是 window 对象的属性. 全局函数是 window 对象的方法. 1. open方法 语法格式: window.open(URL,窗口名称,窗口风格) 功能:打开一个新的窗

理解document.all[]:DOM文档对象模型

文章简介:浅谈document.all与WEB标准. 1.DOM WEB标准现在可真是热门中热门,不过下面讨论的是一个不符合标准的document.all[].DOM--DOCUMENT OBJECT MODEL文档对象模型,提供了访问文档对象的方法.例如文档中有一个table,你要改变它的背景颜色,那就可以在javascript中用document.all[]访问这个TABLE.但DOM也有所不同,因为浏览器厂商之间的竞争,各浏览器厂商都开发了自己的私有DOM,只能在自己的浏览器上正确运行,d

DHTML对象模型(About the DHTML Object Model)(二)

dhtml|model|object|对象|dhtml 事件:冒泡.禁止与处理单击一个按钮,移动鼠标指针到网页的一部分,在页面上选中一些文本--这些动作都会激发事件.一个DHML的网页制作者可以编写代码以便在响应这些事件的时候运行,这段特定的代码通常称为事件句柄,因为它确实在处理事件. 事件处理不仅限于IE4.0和IE3.0, Netscape Navigator 3.x 和Communicator都支持事件处理.然而,在IE4.0中,无论是作为事件源的web页面Html元素,还是这些事件源引发

PHP 5.0对象模型深度探索之对象复制

对象     PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone. 像__construct和__destruct一样,前面有两个下划线. 默认地,用__clone方法将建立一个与原对象拥有相同属性和方法的对象. 如果你想在克隆时改变默认的内容,你要在__clone中覆写(属性或方法). 克隆的方法可以没有参数,但它同时包含this和that指针(that指向被复制的对