共用方式為


SqlDataReader.GetSchemaTable 方法

定義

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

public:
 override System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides 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 實例架構集合所在的資料庫名稱。 nullNothing 如果集合是在目前資料庫中定義,則此值在 Visual Basic 中 () 。 如果沒有架構集合,則它也為 Null,在此情況下 XmlSchemaCollectionName ,和 XmlSchemaCollectionOwningSchema 資料行也是 Null。
XmlSchemaCollectionName 如果資料列包含 XML 資料行的相關資訊,則為這個 XML 實例的架構集合名稱。 如果沒有相關聯的架構集合,這個值會在 null Visual Basic) 中 (Nothing 。 如果值為 Null, XmlSchemaCollectionDatabase 則 和 XmlSchemaCollectionOwningSchema 資料行也是 Null。
XmlSchemaCollectionOwningSchema 如果資料列包含 XML 資料行的相關資訊,則擁有此 XML 實例之架構集合所在的關係架構。 nullNothing 如果集合是在目前資料庫中定義,則此值在 Visual Basic 中 () 。 如果沒有架構集合,則它也為 Null,在此情況下 XmlSchemaCollectionDatabase ,和 XmlSchemaCollectionName 資料行也是 Null。

注意

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

適用於