SqlDataReader.GetSchemaTable 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回 DataTable,以描述 SqlDataReader 的資料行中繼資料。
public:
override System::Data::DataTable ^ GetSchemaTable();
public:
virtual 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 會傳回有關每個資料行的下列元數據:
DataReader 數據行 | 描述 |
---|---|
AllowDBNull | 如果取用者可以將資料行設定為 Null 值,或提供者無法判斷取用者是否可以將資料行設定為 Null 值,則設定 。 否則,不設定。 資料行可包含 null 值,即使它不得設定為 null 值。 |
BaseCatalogName | 包含資料行的資料存放區中之目錄名稱。 如果無法判斷基底目錄名稱,則為 NULL。 此數據行的預設值為 Null 值。 |
BaseColumnName | 在資料存放區中的資料行名稱。 如果使用別名,這可能不同於 ColumnName 數據行中傳回的數據行名稱。 如果無法判斷基底數據行名稱,或數據列集數據行衍生但與數據存放區中的數據行不同,則為 Null 值。 此數據行的預設值為 Null 值。 |
BaseSchemaName | 包含資料行的資料存放區中之結構描述名稱。 如果無法判斷基底結構描述名稱,則為 null 值。 此數據行的預設值為 Null 值。 |
BaseServerName | 所使用的 Microsoft SQL Server SqlDataReader實例名稱。 |
BaseTableName | 包含此資料行的資料存放區中資料表或檢視中的名稱。 如果無法判斷基底資料表名稱,則為 null 值。 此數據行的預設值為 Null 值。 |
ColumnName | 數據行的名稱;這可能不是唯一的。 如果無法判別,則會傳回 null 值。 這個名稱一律會反映目前檢視或命令文字中資料行最近的重新命名。 |
ColumnOrdinal | 資料行以零為起始的序數。 這個資料行不能包含 null 值。 |
ColumnSize | 資料欄中值的可能長度上限。 對於使用固定長度數據類型的數據行,這是數據類型的大小。 對於nvarchar(MAX) 儲存在 SQL Server 資料庫中的 、 varchar(MAX) 和數據varbinary(MAX) 行,大小上限為 2GB。 如果這些數據行是以檔案的形式儲存和存取,則文件系統會加總大小上限。 在 連接字串 中使用 關鍵詞時,Type System Version 這個值會變更。 對於新類型,它們會以舊版類型表示。 MAX 數據類型會針對 傳回一般 4k nvarchar ,而 針對 傳 varchar 回 8000。 如需詳細資訊,請參閱 Transact-SQL 參考。 |
DataTypeName | 傳回字串,表示指定之數據行的數據類型。 |
IsAliased |
true :數據行名稱是別名。false :數據行名稱不是別名。 |
IsAutoIncrement |
true :數據行會以固定增量將值指派給新數據列。false :數據行不會以固定增量將值指派給新數據列。 這個資料行的預設值為 false 。 |
IsColumnSet |
true :數據行是屬於數據行集成員的疏鬆數據行。 |
IsExpression |
true :數據行是表達式。false :數據行不是表達式。 |
IsHidden |
true :數據行已隱藏。false :數據行未隱藏。 |
IsIdentity |
true :數據行是標識列。false :數據行不是標識列。 |
IsKey |
true :數據行是數據列集中的其中一組數據行,可一起唯一識別數據列。 將 IsKey 設為 true 的整組資料行必須唯一識別資料列集內的某個資料列。 不需要這組資料行集是最基本的資料行集。 這組資料行可從基底資料表主索引鍵產生,為一不重複的條件約束或不重複的索引。false :數據行不需要唯一識別數據列。 |
IsLong |
true :數據行包含二進位 Long 物件 (BLOB) ,其中包含非常長的數據。 非常長資料的定義各個特定提供者各異。false :數據行不包含包含非常長數據的二進位 Long 物件 (BLOB) 。 |
IsReadOnly |
true :無法修改資料行。false :可以修改資料行。 |
IsRowVersion |
true :數據行包含無法寫入的永續性數據列標識符,而且除了識別數據列之外沒有有意義的值。false :數據行不包含無法寫入的永續性數據列標識符,而且除了識別數據列之外沒有有意義的值。 |
IsUnique |
true :資料行的類型為 timestamp 。false :數據行不是 類型 timestamp 。 |
NonVersionedProviderType | 數據行的類型,不論 連接字串 中指定的目前Type System Version 類型為何。 傳回的值來自 SqlDbType 列舉。 |
NumericPrecision | 如果 ProviderType 是數值數據類型,則這是數據行的最大精確度。 精確度取決於數據行的定義。 如果 ProviderType 不是數值數據類型,則為 255。 |
NumericScale | 如果 ProviderType 為 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC,則小數點右邊的數位數目。 否則,這是 255。 |
ProviderSpecificDataType | 根據 Type System Version 連接字串 中的 關鍵詞,傳回數據行的提供者特定數據類型。 |
ProviderType | 資料行之資料類型的指標。 如果數據行的數據類型因數據列而異,這必須是 Object。 這個資料行不能包含 null 值。 |
UdtAssemblyQualifiedName | 如果資料列是使用者定義的類型, (UDT) ,則這是 UDT 元件的限定名稱,根據 AssemblyQualifiedName。 如果數據行不是 UDT,則這是 Null。 |
XmlSchemaCollectionDatabase | 如果數據列包含 XML 資料行的相關信息,則為這個 XML 實例架構集合所在的資料庫名稱。 如果集合定義在目前資料庫中,這個值 null 會在Visual Basic中 (Nothing ) 。 如果沒有架構集合,則它也為 Null,在此情況下 XmlSchemaCollectionName ,和數據 XmlSchemaCollectionOwningSchema 行也是 Null。 |
XmlSchemaCollectionName | 如果數據列包含 XML 資料行的相關信息,則這個 XML 實例的架構集合名稱。 如果沒有相關聯的架構集合,這個值 null 會在Visual Basic中 (Nothing ) 。 如果值為 Null, XmlSchemaCollectionDatabase 則 和 數據 XmlSchemaCollectionOwningSchema 行也是 Null。 |
XmlSchemaCollectionOwningSchema | 如果數據列包含 XML 資料行的相關信息,則擁有此 XML 實例之架構集合所在的關係架構。 如果集合定義在目前資料庫中,這個值 null 會在Visual Basic中 (Nothing ) 。 如果沒有架構集合,則它也為 Null,在此情況下 XmlSchemaCollectionDatabase ,和數據 XmlSchemaCollectionName 行也是 Null。 |
注意
若要確定元資料行傳回正確的資訊,您必須使用設定為 KeyInfo
的參數呼叫behavior
ExecuteReader 否則,架構數據表中的某些數據行可能會傳回預設、Null 或不正確的數據。
適用於
另請參閱
- ADO.NET 概觀 \(部分機器翻譯\)