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

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

游标服务使动态属性可用,并增强某些方法的行为。 例如,Optimize 动态属性使临时索引的创建有助于执行某些操作,例如 Find 方法。

游标服务支持在所有情况下批量更新。 此外,当数据提供程序只能提供支持较少的游标(例如静态游标)时,它还模拟了更强大的游标类型,例如动态游标。

关键词

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

connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient

动态属性

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

调用游标服务后,对某些动态属性的更改对基础数据源不可见。 例如,在 Recordset 上设置 Command Time out 属性对基础数据提供程序不可见。


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

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

注意

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

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

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

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

内置属性行为

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

属性名称 描述
游标类型 扩充可用于 Recordset的游标类型。
LockType 补充 记录集可用的锁类型。 启用批量更新。
排序 指定 记录集 排序的一个或多个字段名称,以及每个字段是按升序还是降序排序。

方法行为

适用于 OLE DB 的 Cursor Service 可启用或禁用 Field 对象的 Append 方法的行为;和 Recordset 对象的 OpenResyncUpdateBatchSave 方法。