用于 OLE DB 的 Microsoft 游标服务概述

用于 OLE DB 的 Microsoft 游标服务是对数据提供程序的游标支持函数的补充。 因此,用户可以从所有数据提供程序中体验到相对统一的功能。

该游标服务提供了动态属性,并增强了某些方法的行为。 例如,可通过 Optimize 动态属性创建临时索引,以便于执行某些操作,例如 Find 方法。

游标服务实现了在所有情况下对批量更新的支持。 在数据提供程序只能提供低功能游标(例如静态游标)时,该服务还可以模拟功能更强大的游标类型(例如动态游标)。

关键字

若要调用此服务组件,请将 RecordsetConnection 对象的 CursorLocation 属性设置为 adUseClient。

connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient

动态属性

调用用于 OLE DB 的游标服务时,以下动态属性将添加到 Recordset 对象的 Properties 集合中。 Connection 和 Recordset 对象动态属性的完整列表在 ADO 动态属性索引中列出。 关联的 OLE DB 属性名称(如果适用)包含在 ADO 属性名称后面的括号中。

调用游标服务后,对某些动态属性的更改将对基础数据源不可见。 例如,在 Recordset 上设置“命令超时”属性将对基础数据提供程序不可见。


Recordset1.CursorLocation = adUseClient     'invokes cursor service
Recordset1.Open "authors", _
    "Provider=SQLOLEDB;Data Source=DBServer;User Id=MyUserID;" & _
    "Password=MyPassword;Initial Catalog=pubs;",,adCmdTable
Recordset1.Properties.Item("Command Time out") = 50
' 'Command Time out' property on DBServer is still default (30).

如果应用程序需要游标服务,但你需要在基础提供程序上设置动态属性,请在调用游标服务之前设置这些属性。 无论游标位置如何,命令对象属性设置始终会传递到基础数据提供程序。 因此,还可以随时使用命令对象设置这些属性。

注意

游标服务不支持动态属性 DBPROP_SERVERDATAONINSERT,即使基础数据提供程序支持该属性,也是如此。

属性名称 说明
自动重新计算 (DBPROP_ADC_AUTORECALC) 对于使用数据整理服务创建的记录集,此值指示计算列和聚合列的计算频率。 默认值(值=1)表示每当数据整理服务确定值已更改时就重新计算。 如果值为 0,则仅在最初生成层次结构时计算这些计算列或聚合列。
批大小 (DBPROP_ADC_BATCHSIZE) 指示在发送到数据存储之前可以批处理的更新语句数。 批处理中的语句越多,与数据存储之间的往返次数就越少。
缓存子行 (DBPROP_ADC_CACHECHILDROWS) 对于使用数据整理服务创建的记录集,此值指示子记录集是否存储在缓存中供以后使用。
游标引擎版本 (DBPROP_ADC_CEVER) 指示正在使用的游标服务的版本。
维护更改状态 (DBPROP_ADC_MAINTAINCHANGESTATUS) 指示用于在一个多表联接中重新同步一行或多行的命令文本。
优化 指示是否应创建索引。 设置为 True 时,授权临时创建索引以改进某些操作的执行。
重新调整名称 指示 Recordset 的名称。 可以在当前或后续的数据整理命令中引用。
重新同步命令 指示当唯一表属性有效时由 Resync 方法使用的自定义命令字符串。
唯一目录 指示包含“唯一表”属性中引用的表的数据库的名称。
唯一架构 指示“唯一表”属性中引用的表的所有者的名称。
唯一表 指示从多个表创建的 Recordset 中的一个可通过插入、更新或删除来修改的表的名称。
更新条件 (DBPROP_ADC_UPDATECRITERIA) 指示 WHERE 子句中的哪些字段用于处理更新过程中发生的冲突。
更新重新同步 (DBPROP_ADC_UPDATERESYNC) 指示当“唯一表”属性有效时,是否在 UpdateBatch 方法(及其行为)之后隐式调用 Resync 方法。

还可通过将动态属性的名称指定为 Properties 集合的索引来设置或检索该动态属性。 例如,获取并输出优化动态属性的当前值,然后设置一个新值,如下所示:

Debug.Print rs.Properties("Optimize")
rs.Properties("Optimize") = True

内置属性行为

用于 OLE DB 的游标服务还影响某些内置属性的行为。

属性名称 说明
CursorType 补充了可用于 Recordset 的游标类型。
LockType 补充了可用于 Recordset 的锁类型。 启用批量更新。
Sort 指定作为 Recordset 排序依据的一个或多个字段名称,以及每个字段是按升序还是按降序排序。

方法行为

用于 OLE DB 的游标服务实现或影响以下方法的行为:Field 对象的 Append 方法;以及 Recordset 对象的 OpenResyncUpdateBatchSave 方法。