OpenSchema 方法

从提供程序中获取数据库架构信息。

语法

  
Set recordset = connection.OpenSchema(QueryType, Criteria, SchemaID)  

返回值

返回包含架构信息的 Recordset 对象。 Recordset 将作为只读静态游标打开。 QueryType 确定 Recordset 中显示哪些列。

参数

QueryType
任何 SchemaEnum 值,表示要运行的架构查询的类型。

条件
可选。 每个 QueryType 选项的查询约束数组(如 SchemaEnum 中所列)。

SchemaID
未由 OLE DB 规范定义的提供程序架构查询的 GUID。 如果 QueryType 设置为“adSchemaProviderSpecific”,则此参数是必需的;否则,不使用此参数。

备注

OpenSchema 方法返回有关数据源的自我描述性信息,例如数据源中的表、表中的列和支持的数据类型。

QueryType 参数是一个 GUID,指示返回的列(架构)。 OLE DB 规范包含架构的完整列表。

Criteria 参数限制架构查询的结果。 Criteria 指定值数组,该数组必须出现在结果 Recordset 中的相应列子集(称为约束列)中。

如果在前面列出的那些查询之外,提供程序定义了自己的非标准模式查询,则常量 adSchemaProviderSpecific 用于 QueryType 参数。 使用此常量时,需要 SchemaID 参数才能传递要执行的架构查询的 GUID。 如果 QueryType 设置为 adSchemaProviderSpecific 但未提供 SchemaID,则将导致错误。

提供程序不需要支持所有 OLE DB 标准架构查询。 具体而言,OLE DB 规范仅需要 adSchemaTables、adSchemaColumns 和 adSchemaProviderTypes。 但是,提供程序不需要支持前面为这些架构查询列出的 Criteria 约束。

注意

远程数据服务使用情况:OpenSchema 方法在客户端 Connection 对象上不可用。

注意

在 Visual Basic 中,Connection 对象上的 OpenSchema 方法返回了 Recordset,其中具有四字节无符号整数 (DBTYPE UI4) 的列不能与其他变量进行比较。 有关 OLE DB 数据类型的详细信息,请参阅“Microsoft OLE DB 程序员参考”中的 OLE DB 数据类型 (OLE DB)附录 A:数据类型

注意

Visual C/C++ 用户:如果未使用客户端游标,则在 ADO 中检索列架构的“ORDINAL_POSITION”时,会返回 MDAC 2.7、MDAC 2.8 和 Windows 数据访问组件 (Windows DAC) 6.0 中类型为 VT_R8 的变体,而 MDAC 2.6 中使用的类型是 VT_I4。 为 MDAC 2.6 编写的程序(该程序仅查找返回的类型为 VT_I4 的变体)如果在 MDAC 2.7、MDAC 2.8 和 Windows DAC 6.0 下运行,则每个序号将会是零。 之所以进行此更改,是因为 OLE DB 返回的数据类型是 DBTYPE_UI4,并且在已签名的 VT_I4 类型中,没有足够的空间来包含所有可能的值,可能会发生截断,因而导致数据丢失。

应用于

连接对象 (ADO)

另请参阅

OpenSchema 方法示例 (VB)
OpenSchema 方法示例 (VC++)
Open 方法(ADO 连接)
Open 方法(ADO 记录)
Open 方法(ADO 记录集)
Open 方法(ADO 流)
附录 A:提供程序