SqlDataReader.GetSchemaTable 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回 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 實例架構集合所在的資料庫名稱。 null Nothing 如果集合是在目前資料庫中定義,則此值在 Visual Basic 中 () 。 如果沒有架構集合,則它也為 Null,在此情況下 XmlSchemaCollectionName ,和 XmlSchemaCollectionOwningSchema 資料行也是 Null。 |
XmlSchemaCollectionName | 如果資料列包含 XML 資料行的相關資訊,則為這個 XML 實例的架構集合名稱。 如果沒有相關聯的架構集合,這個值會在 null Visual Basic) 中 (Nothing 。 如果值為 Null, XmlSchemaCollectionDatabase 則 和 XmlSchemaCollectionOwningSchema 資料行也是 Null。 |
XmlSchemaCollectionOwningSchema | 如果資料列包含 XML 資料行的相關資訊,則擁有此 XML 實例之架構集合所在的關係架構。 null Nothing 如果集合是在目前資料庫中定義,則此值在 Visual Basic 中 () 。 如果沒有架構集合,則它也為 Null,在此情況下 XmlSchemaCollectionDatabase ,和 XmlSchemaCollectionName 資料行也是 Null。 |
注意
若要確定中繼資料行傳回正確的資訊,您必須呼叫 ExecuteReaderbehavior
,並將 參數設定為 KeyInfo
。 否則,架構資料表中的某些資料行可能會傳回預設、Null 或不正確的資料。