概要
本文介绍如何使用 ActiveX 数据对象 (ADO) Connection 对象的 OpenSchema 方法获取有关数据库或表的详细信息。 OpenSche...
<script type="text/javascript"></script>
本文介绍如何使用 ActiveX 数据对象 (ADO) Connection 对象的 OpenSchema 方法获取有关数据库或表的详细信息。
OpenSchema 的语法是下面:
OpenSchema 的语法是下面:
设置记录集 = connection.OpenSchema (QueryType,SchemaID 的条件)
更多信息
下面是三个参数 OpenSchema 方法: 指定的所需的架构类型的枚举的值。 示例包括 adSchemaTables、 adSchemaPrimaryKeys...
<script type="text/javascript"></script>
下面是三个参数 OpenSchema 方法:
使用 adSchemaTables 列出数据库中的表。
要列出只能访问 Nwind 数据库中表,使用:
使用相同语法与 Jet ODBC 驱动程序使用用于 ODBC 的 OLE DB 提供程序以及使用 Jet OLE DB 提供程序。
要列出只是在 Microsoft SQL Server Pubs 数据库中的在表,使用:
使用相同的语法与 SQL Server ODBC 驱动程序使用 ODBC 的 OLE DB 提供程序,并使用 OLE DB Provider for SQL Server。
使用 adSchemaColumns 列出表中的字段。
此适用使用 OLE DB Provider for ODBC 与 Jet ODBC 驱动程序和使用 Jet OLE DB 提供程序。
的 TABLE _ CATALOG 数据库并且 TABLE _ SCHEMA 表所有者的注释。 这是使用 OLE DB Provider for ODBC 使用 SQL Server ODBC 驱动程序和使用 OLE DB Provider for SQL Server。
您提供的 adSchemaIndexes querytype 索引名称。
此适用使用 OLE DB Provider for ODBC 与 Jet ODBC 驱动程序和使用 Jet OLE DB 提供程序。
这有效使用 OLE DB Provider for ODBC 使用 SQL Server ODBC 驱动程序和使用 OLE DB Provider for SQL Server。 以下步骤演示 OpenSchema 方法。
请注意 您要更改 UID = <username> 和 PWD = < 强密码 > 正确的值在运行此代码之前。 请确保 UID 具有适当的权限在数据库上执行此操作。
Run. 单击要测试每个命令按钮。 End.modify 窗体加载事件过程来对 SQL Server 使用本机提供程序。 再次测试。 ADO 文档有 querytype 和条件的更多信息。 OLE DB 中指定的架构信息基于提供程序支持一个目录和架构的概念的假设。
- 指定的所需的架构类型的枚举的值。 示例包括 adSchemaTables、 adSchemaPrimaryKeys、 adSchemaColumns。
- 一个 Variant 数组。 元素和此阵列中的内容的数量取决于要运行架构查询的类型。 可以使用此参数来限制在结果集中返回的行数。 但是,您不能限制您返回使用 OpenSchema 的列数。 条件阵列成员表示该字符串值来限制查询结果。 阵列成员数在 querytype 而异。
- 第三个参数因您使用提供程序而异。 它只有当时才需要将第一个参数设置为 adSchemaProviderSpecific ; 否则,它不使用。
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
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
Set rs = cn.OpenSchema(adSchemaTables, _
Array(Empty, Empty, Empty, "Table")
Microsoft SQL Server 6.5 和 7.0
<script type="text/javascript"></script> 要列出的所有表和 Microsoft SQL Server Pubs 数据库中的视图,使用: Set rs = cn.OpenSchema(adSchemaTables)
Set rs = cn.OpenSchema(adSchemaTables, _
Array("Pubs", Empty, Empty, "Table")
QueryType Criteria =============================== adSchemaColumns TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME
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
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")
QueryType Criteria ================================ adSchemaIndexes TABLE_CATALOG TABLE_SCHEMA INDEX_NAME TYPE TABLE_NAME
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
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")
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
参考
有关 OpenSchema 的详细信息,请参阅以下 Microsoft 知识库中的文章: 182831 (http://support.microsoft.c...
<script type="text/javascript"></script>