用于 OLE DB 的 Microsoft 游标服务概述
用于 OLE DB 的 Microsoft 游标服务是对数据提供程序的游标支持函数的补充。 因此,用户可以从所有数据提供程序中体验到相对统一的功能。
该游标服务提供了动态属性,并增强了某些方法的行为。 例如,可通过 Optimize 动态属性创建临时索引,以便于执行某些操作,例如 Find 方法。
游标服务实现了在所有情况下对批量更新的支持。 在数据提供程序只能提供低功能游标(例如静态游标)时,该服务还可以模拟功能更强大的游标类型(例如动态游标)。
关键字
若要调用此服务组件,请将 Recordset 或 Connection 对象的 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=<password>;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 对象的 Open、Resync、UpdateBatch 和 Save 方法。