如何在 Visual Basic 中使用 ADO OpenSchema 方法

概要
本文介绍如何使用 ActiveX 数据对象 (ADO) Connection 对象的 OpenSchema 方法获取有关数据库或表的详细信息。 OpenSche...

<script type="text/javascript"></script>

本文介绍如何使用 ActiveX 数据对象 (ADO) Connection 对象的 OpenSchema 方法获取有关数据库或表的详细信息。

OpenSchema 的语法是下面:
设置记录集 = connection.OpenSchema (QueryType,SchemaID 的条件)

更多信息
下面是三个参数 OpenSchema 方法: 指定的所需的架构类型的枚举的值。 示例包括 adSchemaTables、 adSchemaPrimaryKeys...

<script type="text/javascript"></script>

下面是三个参数 OpenSchema 方法:
  • 指定的所需的架构类型的枚举的值。 示例包括 adSchemaTables、 adSchemaPrimaryKeys、 adSchemaColumns。
  • 一个 Variant 数组。 元素和此阵列中的内容的数量取决于要运行架构查询的类型。 可以使用此参数来限制在结果集中返回的行数。 但是,您不能限制您返回使用 OpenSchema 的列数。 条件阵列成员表示该字符串值来限制查询结果。 阵列成员数在 querytype 而异。
  • 第三个参数因您使用提供程序而异。 它只有当时才需要将第一个参数设置为 adSchemaProviderSpecific ; 否则,它不使用。
以下为 OpenSchema 是示例参数。 请注意条件更改与该 querytype。 最重要记住的是提供值的顺序必须为相同。 其他 querytypes 相应条件的列表是联机文档位于以下 URL:
http://msdn2.microsoft.com/en-us/library/ms805098.aspx (http://msdn2.microsoft.com/en-us/library/ms805098.aspx)
   QueryType        Criteria
   =============================

   adSchemaTables   TABLE_CATALOG
                    TABLE_SCHEMA
                    TABLE_NAME
                    TABLE_TYPE
				
使用 adSchemaTables 列出数据库中的表。
Microsoft Access 97 和 Access 2000
<script type="text/javascript"></script> 若要列出所有表和 Microsoft Access NWind 数据库中的查询,只是使用以下代码:
Set rs = cn.OpenSchema(adSchemaTables)
   While Not rs.EOF
      Debug.Print rs!TABLE_NAME
      rs.MoveNext
   Wend
				
要列出只能访问 Nwind 数据库中表,使用:
Set rs = cn.OpenSchema(adSchemaTables, _
         Array(Empty, Empty, Empty, "Table")
				
使用相同语法与 Jet ODBC 驱动程序使用用于 ODBC 的 OLE DB 提供程序以及使用 Jet OLE DB 提供程序。
Microsoft SQL Server 6.5 和 7.0
<script type="text/javascript"></script> 要列出的所有表和 Microsoft SQL Server Pubs 数据库中的视图,使用:
Set rs = cn.OpenSchema(adSchemaTables)
				
要列出只是在 Microsoft SQL Server Pubs 数据库中的在表,使用:
Set rs = cn.OpenSchema(adSchemaTables, _
         Array("Pubs", Empty, Empty, "Table")
				
使用相同的语法与 SQL Server ODBC 驱动程序使用 ODBC 的 OLE DB 提供程序,并使用 OLE DB Provider for SQL Server。
   QueryType         Criteria
   ===============================

   adSchemaColumns   TABLE_CATALOG
                     TABLE_SCHEMA
                     TABLE_NAME
                     COLUMN_NAME
				
使用 adSchemaColumns 列出表中的字段。
Microsoft Access 97 和 Access 2000
<script type="text/javascript"></script> 到与 adSchemaColumns,只使用数据库的 Access Nwind 中 Employees 表中的该字段的列表:
Set rs = cn.OpenSchema(adSchemaColumns,Array(Empty, Empty, "Employees")

While Not rs.EOF
   Debug.Print rs!COLUMN_NAME
   rs.MoveNext
Wend
				
此适用使用 OLE DB Provider for ODBC 与 Jet ODBC 驱动程序和使用 Jet OLE DB 提供程序。
Microsoft SQL Server 6.5 和 7.0
<script type="text/javascript"></script> 到与 adSchemaColumns,只使用数据库的 SQL Server Pubs 中 Authors (作者) 表中的该字段的列表:
Set rs = cn.OpenSchema(adSchemaColumns, Array("pubs", "dbo", "Authors")
				
的 TABLE _ CATALOG 数据库并且 TABLE _ SCHEMA 表所有者的注释。 这是使用 OLE DB Provider for ODBC 使用 SQL Server ODBC 驱动程序和使用 OLE DB Provider for SQL Server。
   QueryType          Criteria
   ================================

   adSchemaIndexes    TABLE_CATALOG
                      TABLE_SCHEMA
                      INDEX_NAME
                      TYPE
                      TABLE_NAME
				
您提供的 adSchemaIndexes querytype 索引名称。
Microsoft Access 97 和 Access 2000
<script type="text/javascript"></script> 到与 adSchemaIndexes,只使用数据库的 Access Nwind 中 Employees 表中的索引的列表:
Set rs = cn.OpenSchema(adSchemaIndexes, _
         Array(Empty, Empty, Empty, Empty, "Employees")

While Not rs.EOF
   Debug.Print rs!INDEX_NAME
   rs.MoveNext
Wend
				
此适用使用 OLE DB Provider for ODBC 与 Jet ODBC 驱动程序和使用 Jet OLE DB 提供程序。
Microsoft SQL Server 6.5 和 7.0
<script type="text/javascript"></script> 到 SQL Server Pubs 中的 Authors 表中的索引数据库与 adSchemaIndexes,只需使用的列表:
Set rs = cn.OpenSchema(adSchemaIndexes, _
         Array("Pubs", "dbo", Empty, Empty, "Authors")
				
这有效使用 OLE DB Provider for ODBC 使用 SQL Server ODBC 驱动程序和使用 OLE DB Provider for SQL Server。 以下步骤演示 OpenSchema 方法。
OpenSchema 方法示例
<script type="text/javascript"></script> 在 Visual Basic (VB) 中选择一个标准 EXE 项目。 将三个命令按钮添加到 EXE 项目。 在 项目 菜单上选择 引用 。 在引用对话框中选择 Microsoft ActiveX 对象 Library 。 此示例使用 Pubs 数据库附带 SQL Server。 您需要将数据源名称 (DSN) 更改为您的计算机上的 DSN。 将以下代码粘贴到项目的通用声明部分:

请注意 您要更改 UID = <username> 和 PWD = < 强密码 > 正确的值在运行此代码之前。 请确保 UID 具有适当的权限在数据库上执行此操作。
   'Open the proper connection.
   Dim cn As New ADODB.Connection
   Dim rs As New ADODB.Recordset

   Private Sub Command1_Click()
   'Getting the information about the columns in a particular table.
      Set rs = cn.OpenSchema(adSchemaColumns, Array("pubs", "dbo", _
             "authors"))
      While Not rs.EOF
          Debug.Print rs!COLUMN_NAME
          rs.MoveNext
      Wend

   End Sub

   Private Sub Command2_Click()
   'Getting the information about the primary key for a table.
      Set rs = cn.OpenSchema(adSchemaPrimaryKeys, Array("pubs", "dbo", _
             "authors"))
      MsgBox rs!COLUMN_NAME
   End Sub

   Private Sub Command3_Click()
   'Getting the information about all the tables.
      Dim criteria(3) As Variant
      criteria(0) = "pubs"
      criteria(1) = Empty
      criteria(2) = Empty
      criteria(3) = "table"
      Set rs = cn.OpenSchema(adSchemaTables, criteria)
      While Not rs.EOF
         Debug.Print rs!TABLE_NAME

         rs.MoveNext
      Wend

   End Sub

   Private Sub Form_Load()
      cn.Open "dsn=pubs;uid=<username>;pwd=<strong password>;"
      'To test with the Native Provider for SQL Server, comment the
      ' line above then uncomment the following line. Modify to use
      ' your server.
      'cn.Open "Provider=SQLOLEDB;Data Source=<servername>;" & _
      '        "User ID=sa;password=;"

   End Sub
				
Run. 单击要测试每个命令按钮。 End.modify 窗体加载事件过程来对 SQL Server 使用本机提供程序。 再次测试。 ADO 文档有 querytype 和条件的更多信息。 OLE DB 中指定的架构信息基于提供程序支持一个目录和架构的概念的假设。

参考
有关 OpenSchema 的详细信息,请参阅以下 Microsoft 知识库中的文章: 182831  (http://support.microsoft.c...

<script type="text/javascript"></script>

有关 OpenSchema 的详细信息,请参阅以下 Microsoft 知识库中的文章:
182831  (http://support.microsoft.com/kb/182831/EN-US/ ) 如何到 Visual C++ 中使用 ADO OpenSchema 方法
185979  (http://support.microsoft.com/kb/185979/EN-US/ ) 如何使用 ADO 检索表索引信息
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值