共用方式為


通用結構描述集合 (ADO.NET)

更新: November 2007

通用結構描述集合是由每個 .NET Framework Managed 提供者所實作的結構描述集合。您可以藉由呼叫 GetSchema 方法 (不使用引數或使用結構描述集合名稱 MetaDataCollections) 查詢 .NET Framework Managed 提供者,以判斷支援的結構描述集合清單。這會傳回 DataTable,包括支援的結構描述集合清單、每個集合所支援的限制數目,以及集合所使用之識別項部分的數目。這些集合會描述所有必要資料行。如果願意,提供者可以隨意加入其他資料行。例如,SqlClient 及 OracleClient 會將 ParameterName 加入限制集合。

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

如需使用 GetSchema 方法的詳細資訊,請參閱GetSchema 和結構描述集合 (ADO.NET)

MetaDataCollections

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

資料行名稱

資料類型

描述

CollectionName

string

要傳遞至 GetSchema 方法以傳回集合的集合名稱。

NumberOfRestriction

int

可以為集合指定的限制數目。

NumberOfIdentifierParts

int

複合識別項/資料庫物件名稱的部分數目。例如,在 SQL Server 中,資料表數目應為 3,資料行數目應為 4。在 Oracle 中,資料表數目應為 2,資料行數目應為 3。

DataSourceInformation

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

資料行名稱

資料類型

描述

CompositeIdentifierSeparatorPattern

string

符合複合識別項中複合分隔符號的規則運算式。例如,"\." (針對 SQL Server) 或 "@|\." (針對 Oracle)。

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

針對 SQL Server 會使用規則運算式 "\."。針對 OracleClient 則會使用 "@|\."。

針對 ODBC 會使用 Catalog_name_seperator。

針對 OLE DB 會使用 DBLITERAL_CATALOG_SEPARATOR 或 DBLITERAL_SCHEMA_SEPARATOR。

DataSourceProductName

string

提供者存取的產品名稱,如 "Oracle" 或 "SQLServer"。

DataSourceProductVersion

string

表示提供者存取的產品版本,使用資料來源原生格式,而非 Microsoft 格式。

在某些情況下,DataSourceProductVersion 及 DataSourceProductVersionNormalized 將為同一值。若為 OLE DB 及 ODBC,這些值將永遠相同,因為它們對應於基礎原生 API 中的同一函式呼叫。

DataSourceProductVersionNormalized

string

資料來源的正規化版本,可使用 String.Compare() 進行比較。它的格式對提供者的所有版本來說都一致,這可以防止版本 10 在版本 1 與版本 2 之間排序。

例如,Oracle 提供者針對其正規化版本使用 nn.nn.nn.nn.nn 格式,如此會使 Oracle 8i 資料來源傳回 08.01.07.04.01。SQL Server 則使用典型的 Microsoft "nn.nn.nnnn" 格式。

在某些情況下,DataSourceProductVersion 及 DataSourceProductVersionNormalized 將為同一值。若為 OLE DB 及 ODBC,這些值將永遠相同,因為它們對應於基礎原生 API 中的同一函式呼叫。

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"。

如果資料來源不要求具名參數而要求使用 '?' 字元,則格式字串可指定為 '?',這會忽略參數名稱。針對 OLE DB 將傳回 '?'。

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 提供者目前所連接之資料庫所支援資料型別的相關資訊。

資料行名稱

資料類型

描述

TypeName

string

提供者特定的資料型別名稱。

ProviderDbType

int

指定參數型別時,應使用之提供者特定的型別值。例如,SqlDbType.Money 或 OracleType.Blob。

ColumnSize

long

非數值資料行或參數的長度是指提供者為此型別定義的最大值或長度。

若為字元資料,此為資料來源定義的最大或已定義的長度單位。在 Oracle 中可以指定長度,然後指定某些字元資料型別的實際儲存大小。如此僅會針對 Oracle 定義長度單位。

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

如果資料型別為數字,此為資料型別最大精確度的上限。

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 Framework 型別的名稱。

IsAutoincrementable

bool

True 表示此資料型別的值可能會自動遞增。

False 表示此資料型別的值可能不會自動遞增。

請注意,這僅表示此資料型別的資料行是否自動遞增,而不表示所有此型別的資料行都會自動遞增。

IsBestMatch

bool

True 表示資料型別是資料儲存中所有資料型別,與 DataType 資料行之值所表示的 .NET Framework 資料型別間的最佳相符項。

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 表示資料型別為 unsigned。

False 表示資料型別為 signed。

DBNull.Value 表示不適用於資料型別。

MaximumScale

short

如果型別指示器為數字型別,則此為小數點右邊所允許的最大位數。否則為 DBNull.Value。

MinimumScale

short

如果型別指示器為數字型別,則此為小數點右邊所允許的最小位數。否則為 DBNull.Value。

IsConcurrencyType

bool

True 表示每次資料列變更及資料行的值與之前的值不同時,資料庫都會更新資料型別。

False 表示每次資料列變更時,資料庫不會更新資料型別。

DBNull.Value 表示資料庫不支援此型別的資料型別。

IsLiteralsSupported

bool

True 表示資料型別可表示為常值。

False 表示資料型別不可表示為常值。

LiteralPrefix

string

套用至指定常值的前置詞。

LitteralSuffix

string

套用至指定常值的後置詞。

NativeDataType

字串

NativeDataType 是用於公開資料型別之 OLE DB 型別的 OLE DB 特定資料行。

限制

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

資料行名稱

資料類型

描述

CollectionName

string

會套用這些限制的集合名稱。

RestrictionName

string

集合中的限制名稱。

RestrictionDefault

string

忽略。

RestrictionNumber

int

此特定限制所屬之集合限制中的實際位置。

ReservedWords

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

資料行名稱

資料類型

描述

ReservedWords

string

提供者特定的保留字。

請參閱

概念

GetSchema 和結構描述集合 (ADO.NET)

其他資源

擷取資料庫結構描述資訊 (ADO.NET)