共用方式為


一般結構描述集合

適用於:.NET Framework .NET .NET Standard

下載 ADO.NET

一般結構描述集合是由每個 .NET 受控提供者所實作的結構描述集合。 您可以藉由呼叫 GetSchema 方法 (不使用引數或使用結構描述集合名稱 "MetaDataCollections"),以查詢 .NET 受控提供者,以決定支援的結構描述集合清單。 這方法會傳回 DataTable,包括支援的結構描述集合清單、每個集合所支援的限制數目,以及集合所使用之識別項部分的數目。 這些集合會描述所有必要資料行。 如果願意,提供者可以隨意新增更多資料行。 例如,Microsoft SqlClient Data Provider for SQL Server 會將 ParameterName 新增至限制集合。

如果提供者無法決定必要資料行的值,則會傳回 Null。

如需使用 GetSchema 方法的詳細資訊,請參閱 GetSchema 與結構描述集合

MetaDataCollections

此結構描述集合會公開目前用於連線至資料庫的提供者所支援的所有結構描述集合的相關資訊。

ColumnName DataType 描述
CollectionName string 要傳遞至 GetSchema 方法以傳回集合的集合名稱。
NumberOfRestrictions int 可以為集合指定的限制數目。
NumberOfIdentifierParts int 複合識別項/資料庫物件名稱的部分數目。 例如,在 SQL Server 中,資料表數目應為 3,資料行數目應為 4。

DataSourceInformation

此結構描述集合會公開 Microsoft SqlClient Data Provider for SQL Server 目前所連線資料來源的相關資訊。

ColumnName DataType Description
CompositeIdentifierSeparatorPattern string 符合複合識別項中複合分隔符號的規則運算式。 例如,\. (適用於 SQL Server)。

複合識別項通常會用於資料庫物件名稱,例如:pubs.dbo.authorspubs@dbo.authors

若為 SQL Server,請使用規則運算式 \.
DataSourceProductName string 提供者所存取產品的名稱,例如 "SQLServer"。
DataSourceProductVersion string 表示提供者存取的產品版本,使用資料來源原生格式,而非 Microsoft 格式。

在某些情況下,DataSourceProductVersionDataSourceProductVersionNormalized 會是相同的值。
DataSourceProductVersionNormalized string 資料來源的正規化版本,可使用 String.Compare() 進行比較。 此格式對提供者的所有版本來說都一致,這可以防止版本 10 在版本 1 與版本 2 之間排序。

例如,SQL Server 會使用典型的 Microsoft nn.nn.nnnn 格式。

在某些情況下,DataSourceProductVersionDataSourceProductVersionNormalized 會是相同的值。
GroupByBehavior GroupByBehavior 指定 GROUP BY 子句中的資料行與選取清單中的非彙總資料行的關係。
IdentifierPattern string 符合識別項並具有識別項相符值的規則運算式。 例如: [A-Za-z0-9_#$]
IdentifierCase IdentifierCase 表示是否將非引號識別項視為區分大小寫。
OrderByColumnsInSelect bool 指定 ORDER BY 子句中的資料行是否必須包含於選取清單中。 值為 true 表示它們必須位於選取清單中。 值為 false 表示它們不必位於選取清單中。
ParameterMarkerFormat string 表示如何格式化參數的格式字串。

如果資料來源支援具名參數,則此字串中的第一個替代符號位置應為要格式化參數名稱的位置。

例如,如果資料來源要求對參數進行命名,並使用 : 作為前置詞,則此字串應為 :{0}。 使用名稱 p1 對此參數進行格式化時,產生的字串為 :p1

如果資料來源要求參數的前置詞為 @,但名稱中已包含此前置詞,則此字串應為 {0},而格式化 @p1 參數時的結果將會是 @p1

如果資料來源不要求具名參數而要求使用 ? 字元,則格式字串可指定為 ?,這會忽略參數名稱。
ParameterMarkerPattern string 符合參數標記的規則運算式。 它會具有參數名稱的相符值 (如果有的話)。

例如,如果支援具名參數將 @ 導引字元包括在參數名稱中,則此模式應為:(\@[A-Za-z0-9_$#]*)

然而,如果支援具名參數以 : 作為導引字元,且其不屬於參數名稱的一部分,則此模式應為::([A-Za-z0-9_$#]\*)

如果資料來源不支援具名參數,則此模式應為 ?
ParameterNameMaxLength int 參數名稱的最大長度 (以字元為單位)。 Visual Studio 要求如果支援參數名稱,則最大長度的最小值為 30 個字元。

如果資料來源不支援具名參數,此屬性將傳回零。
ParameterNamePattern string 符合有效參數名稱的規則運算式。 不同資料來源對於可用於參數名稱的字元具有不同規則。

Visual Studio 要求如果支援參數名稱,則字元 \p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd} 為針對參數名稱有效的支援字元集最小值。
QuotedIdentifierPattern string 符合引號識別項並具有識別項本身 (不帶有引號) 之相符值的規則運算式。 例如,如果資料來源使用雙引號識別引號識別項,此模式應為:(([^\\"]\|\\"\\")*)
QuotedIdentifierCase IdentifierCase 表示是否將引號識別項視為區分大小寫。
StatementSeparatorPattern string 符合陳述式分隔符號的規則運算式。
StringLiteralPattern string 符合字串常值並具有常值本身之相符值的規則運算式。 例如,如果資料來源使用單引號識別字串,此模式應為:('([^']\|'')*')'
SupportedJoinOperators SupportedJoinOperators 指定資料來源支援何種型別的 SQL Join 陳述式。

DataTypes

此結構描述集合會公開 .NET Framework Managed 提供者目前所連接之資料庫所支援資料類型的相關資訊。

ColumnName DataType Description
TypeName string 提供者特定的資料型別名稱。
ProviderDbType int 指定參數的類型時,應使用的提供者特定類型值。 例如: SqlDbType.Money
ColumnSize long 非數值資料行或參數的長度。 此值指提供者為此類型定義的最大值或長度。

若為字元資料,此值為資料來源定義的最大或已定義的長度單位。

若為日期-時間資料類型,則此值為表示字串的長度 (假設最大值可以容納分數秒元件的精確度)。

如果資料類型為數值,此值為資料類型最大有效位數的上限。
CreateFormat string 表示如何將此資料行加入資料定義陳述式的格式字串,如 CREATE TABLE。 CreateParameter 陣列中的每個項目在格式字串都應使用「參數標記」來表示。

例如,SQL 資料型別 DECIMAL 需要精確度及小數位數。 在此情況下,格式字串應為 DECIMAL({0},{1})
CreateParameters string 建立此資料型別的資料行時,必須指定的建立參數。 每個建立參數會以逗號分隔,並按提供時的順序列在字串中。

例如,SQL 資料型別 DECIMAL 需要精確度及小數位數。 在此情況下,建立參數應包含字串 "precision, scale"。

在精確度為 10,小數位數為 2 下建立 DECIMAL 資料行的文字命令中,CreateFormat 資料行的值可能為 DECIMAL({0},{1}),完整的類型規格則為 DECIMAL(10,2)
DataType string 資料類型的 .NET 類型名稱。
IsAutoincrementable bool true - 此資料類型的值可能會自動遞增。

false - 此資料類型的值可能不會自動遞增。

此屬性僅表示此資料類型的資料行是否自動遞增,而不表示所有此類型的資料行都會自動遞增。
IsBestMatch bool true - 資料類型為資料存放區中的所有資料類型與 DataType 資料行值所代表的 .NET 資料類型之間的最符合項目。

false - 資料類型不是最佳相符專案。

對於 DataType 資料行的值都相同的每個資料列集,IsBestMatch 資料行僅會在一個資料列中設定為 true
isCaseSensitive bool true - 資料類型為字元類型且區分大小寫。

false - 資料類型不是字元類型或不區分大小寫。
IsFixedLength bool true - 資料定義語言 (DDL) 所建立之此資料類型的資料行為固定長度。

false - DDL 所建立之此資料類型的資料行為可變長度。

DBNull.Value - 不知道提供者會將此欄位對應至固定長度或是可變長度資料行。
IsFixedPrecisionScale bool true - 資料類型具有固定的精確度及小數位數。

false - 資料類型沒有固定的精確度及小數位數。
IsLong bool true - 資料類型包含極長的資料,極長資料的定義與特定提供者有關。

false - 資料類型不包含很長的資料。
IsNullable bool true - 資料類型可為 Null。

false - 資料類型不可為 Null。

DBNull.Value - 不知道資料類型是否可為 Null。
IsSearchable bool true - 資料類型可用於使用任何運算子 (LIKE 述詞除外) 的 WHERE 子句。

false - 資料類型不可用於使用任何運算子 (LIKE 述詞除外) 的 WHERE 子句。
IsSearchableWithLike bool true - 資料類型可以搭配 LIKE 述詞使用。

false - 資料類型無法搭配 LIKE 述詞使用。
IsUnsigned bool true - 資料類型不帶正負號。

false - 資料類型帶正負號。

DBNull.Value - 不適用於資料類型。
MaximumScale short 如果類型指示器為數值類型,則此值為小數點右邊所允許的最大位數。 否則,這個值為 DBNull.Value
MinimumScale short 如果類型指示器為數值類型,則此值為小數點右邊所允許的最小位數。 否則,這個值為 DBNull.Value
IsConcurrencyType bool true – 每次資料列變更且資料行的值與之前所有的值不同時,資料庫都會更新資料類型。

false – 每次資料列變更時,資料庫不會更新資料類型。

DBNull.Value – 資料庫不支援此資料類型。
IsLiteralSupported bool true – 資料類型可以常值表示。

false – 資料類型不可以常值表示。
LiteralPrefix string 套用至指定常值的前置詞。
LiteralSuffix string 套用至指定常值的後置詞。

限制

此結構描述集合公開目前用於連接資料庫的提供者所支援之限制的相關資訊。

ColumnName DataType 描述
CollectionName string 會套用這些限制的集合名稱。
RestrictionName string 集合中的限制名稱。
RestrictionDefault string 忽略。
RestrictionNumber int 此特定限制所屬之集合限制中的實際位置。

ReservedWords

此結構描述集合公開提供者目前連接之資料庫所保留字的相關資訊。

ColumnName DataType Description
ReservedWord string 提供者特定的保留字。

請參閱