主機檔案系統的通用結構描述集合
通用架構集合是由主機檔案受控提供者所實作的架構集合。 您可以查詢 Managed 提供者,藉由呼叫 GetSchema
不含引數的方法,或使用架構集合名稱 「MetaDataCollections」 來判斷支援的架構集合清單。 這會傳回 DataTable
物件,其中包含支援的架構集合清單、每個支援的限制數目,以及其使用的識別碼部分數目。
下表描述主機檔案系統的通用架構集合。
資料行
資料行名稱 | 資料類型 | 描述 |
---|---|---|
table_catalog | String | 資料表的目錄。 |
table_schema | String | 包含資料表的結構描述。 |
table_name | String | 資料表名稱。 |
column_name | String | 資料行名稱。 |
ordinal_position | Int16 | 資料行識別碼。 |
column_default | String | 資料行的預設值。 |
is_nullable | String | 資料行的 Null 屬性。 若此資料行允許 NULL,其會傳回 YES。 否則,傳回 NO。 |
data_type | String | 系統提供的資料類型。 |
character_maximum_length | Int32 – Sql8, Int16 – Sql7 | 二進位資料、字元資料,或文字和影像資料的最大長度 (以字元為單位)。 否則,就傳回 NULL。 |
character_octet_length | Int32 – SQL8, Int16 – Sql7 | 二進位資料、字元資料,或文字和影像資料的最大長度 (以位元組為單位)。 否則,就傳回 NULL。 |
numeric_precision | Unsigned Byte | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數。 否則,就傳回 NULL。 |
numeric_precision_radix | Int16 | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數基數。 否則,就傳回 NULL。 |
numeric_scale | Int32 | 近似數值資料、精確數值資料、整數資料或貨幣資料的小數位數。 否則,就傳回 NULL。 |
datetime_precision | Int16 | datetime 和 SQL-92 interval 資料類型的子類型代碼。 如果是其他資料類型,就傳回 NULL。 |
character_set_catalog | String | 若資料行為字元資料或文字資料型別,則傳回 master,表示字元集所在的資料庫。 否則,就傳回 NULL。 |
character_set_schema | String | 一律傳回 NULL。 |
character_set_name | String | 若此資料行為字元資料或文字資料型別,則傳回字元集的唯一名稱。 否則,就傳回 NULL。 |
collation_catalog | String | 若資料行為字元資料或文字資料型別,則傳回 master,表示定義定序的資料庫。 否則,這個資料行就是 NULL。 |
DataSourceInformation
名稱 | 類型 | Description |
---|---|---|
CompositeIdentifierSeparatorPattern | 字串 | 符合複合識別項中複合分隔符號的規則運算式。 例如,「\.」 (SQL Server) 或 「@|\」。 (適用於 Oracle)。 |
複合識別碼通常會用於資料庫物件名稱,例如:pubs.dbo.authors 或 pubs@dbo.authors。 | ||
針對 SQL Server 會使用規則運算式 "\."。 針對 OracleClient 則會使用 "@|\."。 | ||
若為 OLE DB,請使用 DBLITERAL_CATALOG_SEPARATOR 或 DBLITERAL_SCHEMA_SEPARATOR。 | ||
DataSourceProductName | 字串 | 提供者存取的產品名稱,如 "Oracle" 或 "SQLServer"。 |
DataSourceProductVersion | 字串 | 提供者存取的產品版本,以資料來源原生格式而非 Microsoft 格式存取。 |
在某些情況下,DataSourceProductVersion 和 DataSourceProductVersionNormalized 是相同的值。 使用 OLE DB 時,它們一律相同,因為它們會對應至基礎原生 API 中的相同函式呼叫。 | ||
DataSourceProductVersionNormalized | 字串 | 資料來源的正規化版本,可使用 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 的情況下,它們一律會與它們對應至基礎原生 API 中的相同函式呼叫。 | ||
GroupByBehavior | GroupByBehavior | 指定 GROUP BY 子句中的資料行與選取清單中的非彙總資料行的關係。 |
IdentifierPattern | 字串 | 符合識別項並具有識別項相符值的規則運算式。 例如,[A-Za-z0-9_#$]。 |
IdentifierCase | IdentifierCase | 指出是否將非引號識別碼視為區分大小寫。 |
OrderByColumnsInSelect | bool | 指定 ORDER BY 子句中的資料行是否必須包含於選取清單中。 True 值表示其必須包含於選取清單中,False 值表示其不必包含於選取清單中。 |
ParameterMarkerFormat | 字串 | 表示如何格式化參數的格式字串。 |
如果資料來源支援具名參數,則此字串中的第一個替代符號位置應為要格式化參數名稱的位置。 | ||
例如,如果資料來源預期參數名稱為 ,並以 ':' 作為前置詞,則這會是 「: {0} 」。 使用參數名稱 "p1" 對進行格式化時,產生的字串為 ":p1"。 | ||
如果資料來源預期參數前面加上 '@',但名稱已經包含它們,這會是 ' {0} ',而且格式化名為 「@p1」 的參數結果只會是 「@p1」。 | ||
對於不需要具名參數且預期使用 '?' 的資料來源 字元,格式字串只能指定為 '?',這會忽略參數名稱。 針對 OLE DB 將傳回 '?'。 | ||
ParameterMarkerPattern | 字串 | 符合參數標記的規則運算式。 如果有的話,它具有參數名稱的相符值。 |
例如,如果支援具名參數將 '@' 導引字元包括在參數名稱中,則此項將為:“(@[A-Za-z0-9_$#]*)”。 | ||
然而,如果支援具名參數以 ‘:’ 做為導引字元,且其不屬於參數名稱的一部分,則此項將為:“:([A-Za-z0-9_$#]*)”。 | ||
當然,如果資料來源不支援具名參數,這只會是 「?」。 | ||
ParameterNameMaxLength | int | 參數名稱的最大長度 (以字元為單位)。 Visual Studio 要求如果支援參數名稱,則最大長度的最小值為 30 個字元。 |
如果資料來源不支援具名參數,此屬性將傳回零。 | ||
ParameterNamePattern | 字串 | 符合有效參數名稱的規則運算式。 不同資料來源對可用於參數名稱的字元具有不同規則。 |
Visual Studio 要求如果支援參數名稱,則字元 "\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd}" 為針對參數名稱有效的支援字元集最小值。 | ||
QuotedIdentifierPattern | 字串 | 符合引號識別項並具有識別項本身 (不帶有引號) 之相符值的規則運算式。 例如,如果資料來源使用雙引號來識別引號識別碼,這會是:「 ( ([^\」]|\「\」) *) 」。 |
QuotedIdentifierCase | IdentifierCase | 指出引號識別碼是否被視為區分大小寫。 |
StatementSeparatorPattern | 字串 | 符合陳述式分隔符號的規則運算式。 |
StringLiteralPattern | 字串 | 符合字串常值並具有常值本身之相符值的規則運算式。 例如,如果資料來源使用單引號識別字串,此項為:"('([^']|'')*')"' |
SupportedJoinOperators | SupportedJoinOperators | 指定資料來源支援何種型別的 SQL Join 陳述式。 |
DataTypes
資料行名稱 | 資料類型 | Description |
---|---|---|
TypeName | 字串 | 提供者特定的資料型別名稱。 |
ProviderDbType | int | 指定參數型別時,應使用之提供者特定的型別值。 例如,SqlDbType.Money 或 OracleType.Blob 。 |
ColumnSize | long | 非數值資料行或參數的長度是指提供者為此型別定義的最大值或長度。 |
若為字元資料,此為資料來源定義的最大或已定義的長度單位。 在 Oracle 中可以指定長度,然後指定某些字元資料型別的實際儲存大小。 如此僅會針對 Oracle 定義長度單位。 | ||
若為日期-時間資料型別,則此為表示字串的長度 (假設最大值可以容納分數秒元件的精確度)。 | ||
如果資料型別為數字,此為資料型別最大精確度的上限。 | ||
CreateFormat | 字串 | 表示如何將此資料行加入資料定義陳述式的格式字串,如 CREATE TABLE。 陣列中的每個 CreateParameter 元素都應該以格式字串中的「參數標記」來表示。 |
例如,SQL 資料型別 DECIMAL 需要精確度及小數位數。 在此情況下,格式字串會是 「DECIMAL ({0} , {1}) 」。 | ||
CreateParameters | 字串 | 建立此資料型別的資料行時,必須指定的建立參數。 每個建立參數會以逗號分隔,並按提供時的順序列在字串中。 |
例如,SQL 資料型別 DECIMAL 需要精確度及小數位數。 在此情況下,建立參數應包含字串 "precision, scale"。 | ||
在文字命令中,建立有效位數為 10 且小數位數為 2 的 DECIMAL 資料行,CreateFormat 資料行的值可能是 DECIMAL ({0} 、 {1}) 」,而完整類型規格會是 DECIMAL (10,2) 。 | ||
DataType | 字串 | 資料型別之 .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 —資料類型為不帶正負號。false —資料類型已簽署。DBNull.Value —不適用於資料類型。 |
MaximumScale | short | 如果型別指示器為數字型別,則此為小數點右邊所允許的最大位數。 否則,這是 DBNull.Value 。 |
MinimumScale | short | 如果型別指示器為數字型別,則此為小數點右邊所允許的最小位數。 否則,這是 DBNull.Value 。 |
IsConcurrencyType | bool | true –每次變更資料列時,資料庫都會更新資料類型,而且資料行的值與所有先前的值不同false –每次變更資料列時,資料庫都會更新資料類型DBNull.Value –資料庫不支援此資料類型。 |
IsLiteralsSupported | bool | true –資料類型可以表示為常值。false –資料類型不能以常值表示。 |
LiteralPrefix | 字串 | 套用至指定常值的前置詞。 |
LitteralSuffix | 字串 | 套用至指定常值的後置詞。 |
NativeDataType | 字串 | 用於公開資料類型 之 OLE DB 類型的 OLE DB 特定資料行。 |
MetaDataCollections
資料行名稱 | 資料類型 | 描述 |
---|---|---|
CollectionName | 字串 | 要傳遞至 GetSchema 方法以傳回集合的集合名稱。 |
NumberOfRestriction | int | 可以為集合指定的限制數目。 |
NumberOfIdentifierParts | int | 複合識別項/資料庫物件名稱的部分數目。 例如,在 SQL Server 中,資料表數目應為 3,資料行數目應為 4。 在 Oracle 中,資料表數目應為 2,資料行數目應為 3。 |
限制
資料行名稱 | 資料類型 | 描述 |
---|---|---|
CollectionName | 字串 | 會套用這些限制的集合名稱。 |
RestrictionName | 字串 | 集合中的限制名稱。 |
RestrictionDefault | 字串 | 忽略。 |
RestrictionNumber | int | 此特定限制所屬之集合限制中的實際位置。 |
資料表
資料行名稱 | 資料類型 | 描述 |
---|---|---|
table_catalog | String | 資料表的目錄。 |
table_schema | String | 包含資料表的結構描述。 |
table_name | String | 資料表名稱。 |
table_type | String | 資料表的類型。 可以是 VIEW 或 BASE TABLE。 |