OleDbDataReader.GetSchemaTable 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回 DataTable,以描述 OleDbDataReader 的資料行中繼資料。
public:
override System::Data::DataTable ^ GetSchemaTable();
public:
virtual System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable? GetSchemaTable ();
public System.Data.DataTable GetSchemaTable ();
public override 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 或不正確的數據。