Open 方法(ADO 记录集)

Recordset 对象上打开游标。

语法

  
recordset.Open Source, ActiveConnection, CursorType, LockType, Options  

参数

Source
可选。 计算结果为有效的 Command 对象、SQL 语句、表名称、存储过程调用、URL 或包含持久存储记录集的文件或 Stream 对象的名称的 Variant

ActiveConnection
可选。 一个 Variant 参数(其计算结果为有效 Connection 对象变量名称),或一个 String 型参数(其中包含 ConnectionString 参数)。

CursorType
可选。 一个 CursorTypeEnum 值,用于确定在打开 Recordset 时提供程序应使用的游标类型。 默认值为“adOpenForwardOnly”

LockType
可选。 一个 LockTypeEnum 值,用于确定在打开 Recordset 时提供程序应使用哪种类型的锁定(并发)。 默认值为“adLockReadOnly”

选项
可选。 一个 Long 值,指示提供程序应如何评估 Source 参数(如果它表示的不是 Command 对象),或 Recordset 应如何从之前保存的文件中恢复。 可以是一个或多个 CommandTypeEnumExecuteOptionEnum 值,这些值可以与“按位或”运算符组合。

注意

如果从一个包含持久化 Recordset 的 Stream 打开 Recordset,则使用 ExecuteOptionEnum 值 adAsyncFetchNonBlocking 将没有效果;提取将是同步的,并且是阻塞性的。

注意

ExecuteOpenEnum 值 adExecuteNoRecords 或 adExecuteStream 不应与 Open 一起使用。

注解

ADO Recordset 的默认游标是位于服务器上的只进、只读游标。

对 Recordset 对象使用 Open 方法会打开一个游标,该游标表示基表中的记录、查询结果或以前保存的 Recordset

使用可选的 Source 参数使用以下选项之一指定数据源: Command 对象变量、SQL 语句、存储过程、表名称、URL 或完整的文件路径名称。 如果 Source 是文件路径名,它可以是完整路径 ("c:\dir\file.rst")、相对路径 ("..\file.rst") 或 URL (https://files/file.rst)。

建议不要使用 Open 方法的 Source 参数来执行不返回记录的操作查询,因为没有简单的方法可用来确定调用是否成功。 此类查询返回的 Recordset 将关闭。 若要执行不返回记录的查询(例如 SQL INSERT 语句),请改为调用 Command 对象的 Execute 方法或 Connection 对象的 Execute 方法。

ActiveConnection 参数对应于 ActiveConnection 属性,并指定在哪个连接中打开 Recordset 对象。 如果为此参数传递一个连接定义,ADO 将使用指定的参数打开一个新连接。 通过将 CursorLocation 属性设置为 adUseClient 来使用客户端游标打开 Recordset 后,可以更改此属性的值以将更新发送到另一个提供程序。 或者,可以将此属性设置为 Nothing(在 Microsoft Visual Basic 中)或 NULL 以断开 Recordset 与任何提供程序的连接。 但是,更改服务器端游标的 ActiveConnection 会生成错误。

对于直接对应于 Recordset 对象属性的其他参数(SourceCursorTypeLockType),参数与属性的关系如下:

  • 在打开 Recordset 对象之前,该属性是可读/写的。

  • 除非在执行 Open 方法时传递相应的参数,否则将使用属性设置。 如果传递参数,它将替代相应的属性设置,并且属性设置会使用参数值进行更新。

  • 打开 Recordset 对象后,这些属性将变为只读。

注意

对于 Source 属性设置为有效 Command 对象的 Recordset 对象,ActiveConnection 属性是只读的,即使 Recordset 对象未打开也是如此。

如果在 Source 参数中传递 Command 对象并且还传递 ActiveConnection 参数,则会发生错误。 Command 对象的ActiveConnection 属性必须已设置为有效的 Connection 对象或连接字符串。

如果在 Source 参数中传递 Command 对象以外的其他内容,则可以使用 Options 参数来优化 Source 参数的计算。 如果未定义 Options 参数,则可能会遇到性能下降的问题,因为 ADO 必须调用提供程序来确定参数是否为 SQL 语句、存储过程、URL 或表名称。 如果知道所使用的 Source 类型,则设置 Options 参数会指示 ADO 直接跳转到相关代码。 如果 Options 参数与 Source 类型不匹配,则会发生错误。

如果在 Source 参数中传递 Stream 对象,则不应将信息传递到其他参数中。 这样做会导致错误生成。 当从 Stream 打开 Recordset 时,不会保留 ActiveConnection 信息。

如果没有任何连接与 Recordset 相关联,则 Options 参数的默认值为 adCmdFile。 对于永久存储的 Recordset 对象,通常会是这种情况。

如果数据源不返回任何记录,则提供程序会将 BOFEOF 属性设置为 True,并且当前记录位置是未定义的。 你仍可将新数据添加到此空 Recordset 对象(如果游标类型允许)。

在对打开的 Recordset 对象执行完操作后,请使用 Close 方法释放任何关联的系统资源。 关闭对象不会将其从内存中删除;可以更改其属性设置,并使用 Open 方法在以后再次打开它。 若要完全消除内存中的对象,请将对象变量设置为 Nothing

设置 ActiveConnection 属性之前,调用 Open,不带操作数,以创建通过将字段追加到 Recordset Fields 集合创建的 Recordset 实例。

如果已将 CursorLocation 属性设置为 adUseClient,则可以采用两种方式之一来异步检索行。 建议的方法是将 Options 设置为 adAsyncFetch。 或者,可以使用 Properties 集合中的“异步行集处理”动态属性,但如果未将 Options 参数设置为 adAsyncFetch,已检索到的相关事件可能会丢失。

注意

仅通过 Open 方法的 Options 参数支持 MS 远程提供程序中的后台提取。

注意

使用 http 方案的 URL 将自动调用用于 Internet 发布的 Microsoft OLE DB 提供程序。 有关详细信息,请参阅绝对 URL 和相对 URL

CommandTypeEnumExecuteOptionEnum 值的某些组合无效。 有关无法组合哪些选项的信息,请参阅 ExecuteOptionEnumCommandTypeEnum 的主题。

应用于

记录集对象 (ADO)

另请参阅

Open 和 Close 方法示例 (VB)
Open 和 Close 方法示例 (VBScript)
Open 和 Close 方法示例 (VC++)
Save 和 Open 方法示例 (VB)
Open 方法(ADO 连接)
Open 方法(ADO 记录)
Open 方法(ADO 流)
OpenSchema 方法
Save 方法