OleDbConnection.GetOleDbSchemaTable(Guid, Object[]) OleDbConnection.GetOleDbSchemaTable(Guid, Object[]) OleDbConnection.GetOleDbSchemaTable(Guid, Object[]) OleDbConnection.GetOleDbSchemaTable(Guid, Object[]) Method


应用了指定的限制之后,按照 GUID 的指示从数据源返回架构信息。Returns schema information from a data source as indicated by a GUID, and after it applies the specified restrictions.

 System::Data::DataTable ^ GetOleDbSchemaTable(Guid schema, cli::array <System::Object ^> ^ restrictions);
public System.Data.DataTable GetOleDbSchemaTable (Guid schema, object[] restrictions);
member this.GetOleDbSchemaTable : Guid * obj[] -> System.Data.DataTable
Public Function GetOleDbSchemaTable (schema As Guid, restrictions As Object()) As DataTable


Guid Guid Guid Guid

OleDbSchemaGuid 的值之一,它指定要返回的架构表。One of the OleDbSchemaGuid values that specifies the schema table to return.


限制值的 Object 数组。An Object array of restriction values. 这些值按照限制列的顺序来应用。These are applied in the order of the restriction columns. 即,第一个限制值应用于第一个限制列,第二个限制值应用于第二个限制列,依此类推。That is, the first restriction value applies to the first restriction column, the second restriction value applies to the second restriction column, and so on.


一个包含所请求的架构信息的 DataTableA DataTable that contains the requested schema information.


指定的限制集无效。The specified set of restrictions is invalid.

OLE DB 提供程序不支持指定的架构行集合。The specified schema rowset is not supported by the OLE DB provider.

- 或 --or- schema 参数包含 DbInfoLiterals 的值,restrictions 参数包含一条或多条限制。The schema parameter contains a value of DbInfoLiterals and the restrictions parameter contains one or more restrictions.


下面的示例返回数据库中表的列表。The following sample returns a list of tables in a database.

static DataTable GetSchemaTable(string connectionString)
    using (OleDbConnection connection = new 
        DataTable schemaTable = connection.GetOleDbSchemaTable(
            new object[] { null, null, null, "TABLE" });
        return schemaTable;
Public Function GetSchemaTable(ByVal connectionString As String) _
    As DataTable

    Using connection As New OleDbConnection(connectionString)

        Dim schemaTable As DataTable = _
            connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
            New Object() {Nothing, Nothing, Nothing, "TABLE"})
        Return schemaTable
    End Using
End Function


架构表返回DataTable的格式与schema参数指定的 OLE DB 架构行集的格式相同。The schema table is returned as a DataTable that has the same format as the OLE DB schema rowset specified by the schema parameter. 使用参数可以筛选要DataTable在中返回的行(例如,通过指定表名称、类型、所有者或架构的限制)。 restrictionsUse the restrictions parameter to filter the rows to be returned in the DataTable (for example, by specifying restrictions for table name, type, owner, or schema). 在数组中传递值时,为不包含值的数组元素包含空字符串或 null 值。When you pass values in the array, include empty strings or nulls for array elements that do not contain values. 如果向restrictions传递一个空数组,则按默认顺序返回所有行(每个表一个)。If you pass an empty array to restrictions, all rows (one for each table) are returned in default order. 数组中的值对应于源表和DataTable中列的顺序。Values in the array correspond to the order of the columns in the source table and DataTable. 限制数组中的每个元素都与架构行集中相应列的内容进行比较。Each element in the restrictions array is compared with the content of the corresponding column in the schema rowset. 例如,限制数组中的第一个元素与行集中的第一列进行比较。For example, the first element in the restrictions array is compared to first column in the rowset. 如果限制元素不为 null,则只会将架构行集中与限制的值完全匹配的行添加到生成DataTable的中。If a restriction element is not null, only rows from the schema rowset that exactly match the value of the restriction are added to the resulting DataTable.

方法使用标准公共语言运行时转换规则调用基础 OLE DB IDBSchemaRowset:: GetRowset方法。 OleDbConnectionThe OleDbConnection method calls the underlying OLE DB IDBSchemaRowset::GetRowset method using standard common language runtime conversion rules. 有关详细信息,请参阅COM 数据类型For more information, see COM Data Types.

您可以使用DbInfoLiterals检索有关文本的信息。You can retrieve information about literals by using DbInfoLiterals. adSchemaDBInfoLiterals方法提供了有关调用 OLE DB IDBInfo:: GetLiteralInfo接口的信息,或者与常量一起调用OpenSchema方法的信息。This provides information equivalent to calling the OLE DB IDBInfo::GetLiteralInfo interface, or the ADO Connection.OpenSchema method with the adSchemaDBInfoLiterals constant.