适用于 OLE DB 的Microsoft游标服务概述
适用于 OLE DB 的Microsoft游标服务补充了数据提供程序的游标支持函数。 因此,用户从所有数据提供程序中感知到相对统一的功能。
游标服务使动态属性可用,并增强某些方法的行为。 例如,Optimize 动态属性使临时索引的创建有助于执行某些操作,例如 Find 方法。
游标服务支持在所有情况下批量更新。 此外,当数据提供程序只能提供支持较少的游标(例如静态游标)时,它还模拟了更强大的游标类型,例如动态游标。
关键词
若要调用此服务组件,请将 Recordset 或 Connection 对象的 CursorLocation 属性设置为 adUseClient。
connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient
动态属性
调用 OLE DB 的 Cursor Service 时,以下动态属性将添加到 Recordset 对象的 Properties 集合中。 Connection 和 Recordset 对象动态属性的完整列表列在 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 对象的 Open、Resync、UpdateBatch和 Save 方法。