SqlDataReader.GetSchemaTable 方法

定義

傳回 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的參數呼叫behaviorExecuteReader 否則,架構數據表中的某些數據行可能會傳回預設、Null 或不正確的數據。

適用於

另請參閱