ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索

ADO OpenSchema 方法

已有 1242 次阅读2015-1-22 23:56

定义和用法

OpenSchema 方法可返回 Recordset 对象,该对象包含有关数据源的模式信息。举例,schema 信息可包括表的名称,表中的列名,每列的数据类型。Recordset 将以只读、静态游标模式打开。

语法Set rs=objconn.OpenSchema(querytype,criteria,schemaid)
参数描述
querytype

必需。任意 SchemaEnum 值,表示要运行的模式查询的类型。

注释:OLEDB 规范只要求三个 SchemaEnum 值得到支持:adSchemaTables, adSchemaColumns 以及 adSchemaProviderTypes。

criteria可选。每个 QueryType 选项的查询约束的数组,如 SchemaEnum 中列出的内容。
schemaidOLE DB 规范未定义的提供者模式查询的 GUID。如果 QueryType 被设置为 adSchemaProviderSpecific,则需要此参数。否则,将不使用它。
 
ADODB.Connection 的OpenSchema 方法
(选自MSDN)使用 OpenSchema 方法获取数据库纲要信息

Set recordset = connection.OpenSchema (QueryTypeCriteriaSchemaID)

QueryType   所要运行的纲要查询类型,可以为下列任意常量。

Criteria   可选。每个 QueryType 选项的查询限制条件数组

  QueryType                           Criteria 

adSchemaTables                   TABLE_CATALOG
                                            TABLE_SCHEMA
                                            TABLE_NAME
                                            TABLE_TYPE

在 OpenSchema 方法的 Criteria 参数中指定 TABLE_TYPE 查询约束。因此,只返回在 Pubs 数据库中指定的 Views 的纲要信息。然后该范例显示这些表的名称和类型

以下是引用片段:
Dim cnn2 As ADODB.Connection 
   Dim rstSchema As ADODB.Recordset 
   Dim strCnn As String 
       
   Set cnn2 = New ADODB.Connection 
      strCnn = "Provider=sqloledb;" & _ 
      "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; " 
   cnn2.Open strCnn 
       
   Set rstSchema = cnn2.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "VIEW")) 

      Do Until rstSchema.EOF 
         Debug.Print "Table name: " & _ 
            rstSchema!TABLE_NAME & vbCr & _ 
            "Table type: " & rstSchema!TABLE_TYPE & vbCr 
         rstSchema.MoveNext 
      Loop 
   rstSchema.Close 
    
   cnn2.Close

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 免费注册

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-22 22:43 , Processed in 0.021544 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

返回顶部