OleDbDataReader.GetSchemaTable 方法

定義

傳回 DataTable,以描述 OleDbDataReader 的資料行中繼資料。

public:
 override System::Data::DataTable ^ GetSchemaTable();
public:
 virtual System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
public override System.Data.DataTable? GetSchemaTable ();
public System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable
Public Function GetSchemaTable () As DataTable

傳回

描述資料行中繼資料的 DataTable

實作

例外狀況

備註

方法 GetSchemaTable 會對應至 OLE DB IColumnsRowset::GetColumnsRowset 方法,並以下列順序傳回每個數據行的相關元數據:

DataReader 數據行 OLE DB 資料行標識碼 描述
ColumnName DBCOLUMN_NAME 數據行的名稱;這可能不是唯一的。 如果無法判別,則會傳回 null 值。 這個名稱一律會反映目前檢視或命令文字中資料行最近的重新命名。
ColumnOrdinal DBCOLUMN_NUMBER 資料行以零為起始的序數。 這個資料行不能包含 null 值。
ColumnSize DBCOLUMN_COLUMNSIZE 資料欄中值的可能長度上限。 對於使用固定長度數據類型的數據行,這是數據類型的大小。
NumericPrecision DBCOLUMN_PRECISION 如果 DbType 是數值數據類型,則這是數據行的最大精確度。 數據類型為 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC 的數據行精確度取決於數據行的定義。 如果 DbType 不是數值數據類型,則這是 Null 值。
NumericScale DBCOLUMN_SCALE 如果 DbType 是DBTYPE_DECIMAL或DBTYPE_NUMERIC,則這是小數點右邊的數位數目。 否則,這是 Null 值。
DataType None 對應至數據行 .NET Framework 類型。
ProviderType DBCOLUMN_TYPE 資料行之資料類型的指標。 如果數據行的數據類型因數據列而異,則必須DBTYPE_VARIANT。 這個資料行不能包含 null 值。
IsLong DBCOLUMNFLAGS_ISLONG 如果數據行包含二進位 Long 物件 (BLOB) 包含非常長的數據,提供者就會設定DBCOLUMNFLAGS_ISLONG。 非常長資料的定義各個特定提供者各異。 此旗標的設定會對應至數據類型之PROVIDER_TYPES數據列集中IS_LONG數據行的值。
AllowDBNull DBCOLUMNFLAGS_ISNULLABLE 如果取用者可以將數據行設定為 Null 值,或者提供者無法判斷取用者是否可以將數據行設定為 Null 值,則提供者會設定DBCOLUMNFLAGS_ISNULLABLE。 資料行可包含 null 值,即使它不得設定為 null 值。
IsReadOnly DBCOLUMNFLAGS_WRITE true 如果無法修改資料列,則為 ;否則 false為 。 如果提供者已設定DBCOLUMNFLAGS_WRITE或DBCOLUMNFLAGS_WRITEUNKNOWN旗標,則會假設數據行可寫入。
IsRowVersion DBCOLUMNFLAGS_ISROWID 提供者會設定DBCOLUMNFLAGS_ISROWID,如果數據行包含無法寫入的永續性數據列標識碼,而且除了識別數據列以外沒有有意義的值。
IsUnique DBCOLUMN_ISUNIQUE VARIANT_TRUE:BaseTableName 中傳回的數據表中沒有兩個數據列在此數據行中可以有相同的值。 如果數據行本身代表索引鍵,或只有唯一類型的條件約束僅適用於此數據行,則IsUnique保證會VARIANT_TRUE。

VARIANT_FALSE:數據行可以包含基表中的重複值。 此數據行的預設值為 VARIANT_FALSE。
IsKey DBCOLUMN_KEYCOLUMN VARIANT_TRUE:數據行是數據列集中的其中一組數據行,會一起唯一識別數據列。 IsKey 設定為 VARIANT_TRUE 的數據行集合必須唯一識別數據列集中的數據列。 不需要這組資料行集是最基本的資料行集。 這組資料行可從基底資料表主索引鍵產生,為一不重複的條件約束或不重複的索引。

VARIANT_FALSE:數據行不需要唯一識別數據列。
IsAutoIncrement DBCOLUMN_ISAUTOINCREMENT VARIANT_TRUE:數據行會以固定增量將值指派給新數據列。

VARIANT_FALSE:數據行不會以固定增量將值指派給新數據列。 此數據行的預設值為 VARIANT_FALSE。
BaseSchemaName DBCOLUMN_BASESCHEMANAME 包含資料行的資料存放區中之結構描述名稱。 如果無法判斷基底結構描述名稱,則為 null 值。 此數據行的預設值為 Null 值。
BaseCatalogName DBCOLUMN_BASECATALOGNAME 包含資料行的資料存放區中之目錄名稱。 如果無法判斷基底目錄名稱,則為 null 值。 此數據行的預設值為 Null 值。
BaseTableName DBCOLUMN_BASETABLENAME 包含此資料行的資料存放區中資料表或檢視中的名稱。 如果無法判斷基底資料表名稱,則為 null 值。 此數據行的預設值為 Null 值。
BaseColumnName DBCOLUMN_BASECOLUMNNAME 在資料存放區中的資料行名稱。 如果使用別名,這可能不同於 ColumnName 數據行中傳回的數據行名稱。 如果無法判斷基底數據行名稱,或數據列集數據行衍生但與數據存放區中的數據行不同,則為 Null 值。 此數據行的預設值為 Null 值。

注意

若要確定元資料行傳回正確的資訊,您必須呼叫 ExecuteReaderbehavior ,並將 參數設定為 KeyInfo。 否則,架構數據表中的某些數據行可能會傳回預設、Null 或不正確的數據。

適用於

另請參閱