vb获取数据库中所有表的名称

来源:互联网 发布:2017淘宝店铺排名 编辑:程序博客网 时间:2024/04/26 12:20

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

文章编号: 186246 - 查看本文应用于的产品
309488" _msthash="451464" _mstchunk="true">这篇文章的 Microsoft Visual Basic.NET 版本,请参阅309488
展开全部 |关闭全部

概要

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

下面是 OpenSchema 的语法:
设置记录集 = 连接。OpenSchema (QueryType,条件 SchemaID)
回到顶端 |提供反馈

更多信息

以下是 OpenSchema 方法的三个参数:
  • 一个枚举的值,指定所需的架构类型。示例包括 adSchemaTables、 adSchemaPrimaryKeys、 adSchemaColumns。
  • 一个 variant 类型的值的数组。元素和该数组中的内容的数量取决于运行架构查询的类型。您可以使用此参数来限制返回的结果集中的行数。但是,不能限制使用 OpenSchema 返回的列数。条件数组成员表示的字符串值来限制查询结果。阵列成员数而异的 querytype。
  • 第三个参数会有所不同,具体取决于您使用的提供程序。它是必需的只有当您将第一个参数设置为 adSchemaProviderSpecific。否则,它将不使用。
下面是示例参数为 OpenSchema。注意使用 querytype 将更改条件。需要记住的最重要的一点是提供的值的顺序必须是相同的。其他 querytypes 的相应条件的列表是在联机文档位于下面的 URL:
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

若要列出的表和查询,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

若要列出的所有表和 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 提供程序和对 SQL Server 使用 OLE DB 提供程序。
   QueryType         Criteria   ===============================   adSchemaColumns   TABLE_CATALOG                     TABLE_SCHEMA                     TABLE_NAME                     COLUMN_NAME
使用 adSchemaColumns,可以列出表中的字段。

Microsoft Access 97 和 Access 2000

若要列出访问 Nwind adSchemaColumns 与数据库中雇员表中的字段,只需使用:
Set rs = cn.OpenSchema(adSchemaColumns,Array(Empty, Empty, "Employees")While Not rs.EOF   Debug.Print rs!COLUMN_NAME   rs.MoveNextWend
此操作使用 Jet ODBC 驱动程序与 ODBC OLE DB 提供程序,并且与 Jet OLE DB 提供程序一起使用。

Microsoft SQL Server 6.5 和 7.0

若要列出在 SQL Server Pubs 数据库中以 adSchemaColumns 作者表中的字段,只需使用:
Set rs = cn.OpenSchema(adSchemaColumns, Array("pubs", "dbo", "Authors")
请注意 TABLE_CATALOG 数据库,TABLE_SCHEMA 是表的所有者。此操作的 SQL Server ODBC 驱动程序与 ODBC 使用 OLE DB 提供程序和 SQL Server 使用 OLE DB 提供程序。
   QueryType          Criteria   ================================   adSchemaIndexes    TABLE_CATALOG                      TABLE_SCHEMA                      INDEX_NAME                      TYPE                      TABLE_NAME
提供了在 adSchemaIndexes querytype 的索引名称。

Microsoft Access 97 和 Access 2000

若要列出访问 Nwind adSchemaIndexes 与数据库中雇员表中的索引,只需使用:
Set rs = cn.OpenSchema(adSchemaIndexes, _         Array(Empty, Empty, Empty, Empty, "Employees")While Not rs.EOF   Debug.Print rs!INDEX_NAME   rs.MoveNextWend
此操作使用 Jet ODBC 驱动程序与 ODBC OLE DB 提供程序,并且与 Jet OLE DB 提供程序一起使用。

Microsoft SQL Server 6.5 和 7.0

若要列出在 SQL Server Pubs 数据库中以 adSchemaIndexes 作者表中的索引,只需使用:
Set rs = cn.OpenSchema(adSchemaIndexes, _         Array("Pubs", "dbo", Empty, Empty, "Authors")
此操作的 SQL Server ODBC 驱动程序与 ODBC 使用 OLE DB 提供程序和 SQL Server 使用 OLE DB 提供程序。下面的步骤演示 OpenSchema 方法。

OpenSchema 方法示例

项目 菜单中选择 引用。在引用对话框中选择 Microsoft ActiveX 对象库。此示例使用与 SQL Server 一起提供的 Pubs 数据库。您需要将数据源名称 (DSN) 更改为您的计算机上的 DSN。将以下代码粘贴到的项目的常规声明节中:" _msthash="21495" _mstchunk="true">在 Visual Basic (VB),请选择标准 EXE 项目。EXE 项目中添加三个命令按钮。Project menu, choose References. " _msthash="64485" _mstchunk="true">从项目菜单中,选择引用Microsoft ActiveX Objects Library. " _msthash="85980" _mstchunk="true">在引用对话框中,选择Microsoft ActiveX 对象库此示例使用与 SQL Server 提供的 Pubs 数据库。您需要将数据源名称 (DSN) 更改为在您的计算机上的 DSN。将下面的代码粘贴到该项目的通用声明部分:

<SPAN ? _mstsrchtml="注意您需要更改 UID = &lt;username&gt;和 PWD = &lt; 强密码 &gt; 到正确的值,在运行此代码之前。请确保 UID 具有适当的权限在数据库上执行此操作。" _msthash="21496" _mstchunk="true">Note " _msthash="21496" _mstchunk="true">注意您将需要更改 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
运行。单击要测试的每个命令按钮。End.Modify 为 SQL Server 使用本机的提供程序的窗体加载事件过程。再次测试。ADO 文档有 querytype 和条件的详细信息。指定 OLE DB 中的架构信息基于假定该提供程序支持的目录和架构的概念。
原创粉丝点击