主机文件系统的通用架构集合
通用架构集合是由主机文件的托管提供程序实现的架构集合。 可以通过查询托管提供程序来确定支持的架构集合列表,具体方法为调用没有参数或包含架构集合名称“MetaDataCollections”的 GetSchema
方法。 这样将返回一个 DataTable
对象,其中包含支持的架构集合列表、每个架构集合支持的限制数以及它们使用的标识符部分数。
下表描述了主机文件系统的通用架构集合。
“列”
列名 | 数据类型 | 说明 |
---|---|---|
table_catalog | 字符串 | 表的编录。 |
table_schema | 字符串 | 包含表的架构。 |
table_name | 字符串 | 表名。 |
column_name | 字符串 | 列名称。 |
ordinal_position | Int16 | 列标识号。 |
column_default | 字符串 | 列的默认值。 |
is_nullable | 字符串 | 列的为空性。 如果此列允许 NULL,此列将返回 YES。 否则,返回 No。 |
data_type | 字符串 | 系统提供的数据类型。 |
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 | 字符串 | 如果列为字符数据或文本数据类型,则返回 master,指示字符集所处的数据库。 否则,返回 NULL。 |
character_set_schema | 字符串 | 始终返回 NULL。 |
character_set_name | 字符串 | 如果此列为字符数据或文本数据类型,则返回字符集的唯一名称。 否则,返回 NULL。 |
collation_catalog | 字符串 | 如果列为字符数据或文本数据类型,则返回 master,指示定义分页的数据库。 否则,此列为 NULL。 |
DataSourceInformation
名称 | 类型 | 说明 |
---|---|---|
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
列名 | 数据类型 | 说明 |
---|---|---|
TypeName | 字符串 | 提供程序特定的数据类型名称。 |
ProviderDbType | int | 在指定参数类型时应使用的提供程序特定的类型值。 例如,SqlDbType.Money 或 OracleType.Blob 。 |
ColumnSize | long | 非数值列或参数的长度是指提供程序为此类型定义的最大值或长度。 |
对于字符数据,此值是指最大值或定义长度,单位由数据源定义。 对于某些字符数据类型,Oracle 的观念是先指定长度,然后指定实际存储大小。 对于 Oracle,此值仅定义长度(单位)。 | ||
对于日期时间数据类型,此值是指字符串表示形式的长度(假定小数秒元素允许的最大精度)。 | ||
如果数据类型为数值,则是数据类型的最大精度的上限。 | ||
CreateFormat | 字符串 | 格式化字符串,表示如何将此列添加到数据定义语句中,例如 CREATE TABLE。 CreateParameter 数组中的每个元素均应通过格式化字符串中的“参数标记”表示。 |
例如,SQL 数据类型 DECIMAL 需要精度和小数位数。 这种情况下,格式化字符串将为“DECIMAL({0},{1})”。 | ||
CreateParameters | 字符串 | 创建此数据类型的列时必须指定的创建参数。 每个创建参数按照要提供的顺序在该字符串中列出,使用逗号分隔。 |
例如,SQL 数据类型 DECIMAL 需要精度和小数位数。 在此情况下,创建参数应包含字符串“精度, 小数位数”。 | ||
在创建精度为 10、小数位数为 2 的 DECIMAL 列的文本命令中,CreateFormat 列的值可能为“DECIMAL({0},{1})”,完整的类型说明将为 DECIMAL(10,2)。 | ||
数据类型 | 字符串 | 数据类型的 .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 | 字符串 | 表的编录。 |
table_schema | 字符串 | 包含表的架构。 |
table_name | 字符串 | 表名。 |
table_type | 字符串 | 表的类型。 可以是 VIEW 或 BASE TABLE。 |