Ado.net 获取数据库元数据信息
最近一直和元数据打交道
SqlDataReader.GetSchemaTable 方法
一定要创建一个可用的reader。。
不要通过datatable.createreader.getshematable---这样获取出来的信息是不完全的。
简单copy了一下msdn的东西,做一个记录
DataReader 列 | 说明 |
ColumnName | 列的名称;它可能不唯一。如果无法确定该名称,则返回空值。此名称始终反映最近对当前视图或命令文本中的列进行的重命名。 |
ColumnOrdinal | 列的序号。它对于行的书签列(如果有的话)为零。其他列从一开始编号。该列不能包含空值。 |
ColumnSize | 列中值的最大可能长度。对于采用固定长度数据类型的列,它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和varbinary(MAX) 列,最大大小为 2GB。如果这些列以文件形式存储并访问,则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时,该值会更改。对于新的类型,它们表示为下层类型。对于 nvarchar ,MAX 数据类型返回正常的 4k,而对于 varchar,则为 8000。有关更多信息,请参见"SQL Server 联机丛书"中的"Transact-SQL 参考"。 |
NumericPrecision | 如果 ProviderType 是数值数据类型,则它是列的最大精度。精度取决于列的定义。如果 ProviderType 不是数值数据类型,则它为空值。 |
NumericScale | 如果 ProviderType 是 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC,则为小数点右侧的位数。否则,它为空值。 |
IsUnique | 只有对于 timestamp 列才为 true,而对于其他所有列,为 false。 |
IsKey | true:此列是行集合中合起来可唯一地标识该行的一组列中的一列。IsKey 设置为true 的一组列必须唯一地标识行集合中的一行。不要求此列集是最小列集。这组列可以从基表主键、唯一约束或唯一索引生成。 false:唯一地标识该行时不需要此列。 |
BaseServerName | SqlDataReader 使用的 Microsoft SQL Server 实例的名称。 |
BaseCatalogName | 包含列的数据存储区中的目录的名称。如果不能确定基目录名称,则为 NULL。该列的默认值为空值。 |
BaseColumnName | 数据存储区中列的名称。如果使用别名,它可能不同于在 ColumnName 列中返回的列名称。如果无法确定基列名称,或者如果行集合列从数据存储区中的列导出但不等于该列,则为空值。该列的默认值为空值。 |
BaseSchemaName | 包含列的数据存储区中的架构的名称。如果无法确定基架构名称,则为空值。该列的默认值为空值。 |
BaseTableName | 包含列的数据存储区中的表或视图的名称。如果无法确定基表名称,则为空值。该列的默认值为空值。 |
DataType | 映射到列的 .NET Framework 类型。 |
AllowDBNull | 如果使用者可以将该列设置为空值,或者如果提供程序不能确定使用者是否可以将该列设置为空值,则设置该值。否则,不设置该值。即使列无法设置为空值,它仍可能包含空值。 |
ProviderType | 列的数据类型的指示符。如果不同行的列数据类型不同,则它必须为 Object。该列不能包含空值。 |
IsAliased | 如果列名称为别名,则为 true;否则为 false。 |
IsExpression | 如果此列为表达式,则为 true;否则为 false。 |
IsIdentity | 如果此列为标识列,则为 true;否则为 false。 |
IsAutoIncrement | true:该列以固定的增量向新行赋值。 false:该列不以固定的增量向新行赋值。该列的默认值为 false。 |
IsRowVersion | 如果列包含无法写入的不变的行标识符,并且除了标识行外没有其他有意义的值,则设置该值。 |
IsHidden | 如果列是隐藏的,则为 true;否则为 false。 |
IsLong | 如果列包含二进制长对象 (BLOB)(它包含非常长的数据),则设置该值。非常长的数据的定义针对于提供程序。 |
IsReadOnly | 如果不能修改该列,则为 true;否则为 false。 |
ProviderSpecificDataType | 根据连接字符串中的 Type System Version 关键字,返回列的提供程序特定的数据类型。 |
DataTypeName | 返回表示指定列的数据类型的字符串。 |
XmlSchemaCollectionDataBase | 此 XML 实例的架构集合所在的数据库的名称(如果该行包含有关 XML 列的信息)。如果在当前数据库中定义了该集合,则此值为 空引用(在 Visual Basic 中为 Nothing)(在 Visual Basic 中为 Nothing)。如果没有架构集合,则它也为空,这时 XmlSchemaCollectionName 和XmlSchemaCollectionOwningSchema 列也为空。 |
XmlSchemaCollectionOwningSchema | 此 XML 实例的架构集合所在的所属关系架构(如果该行包含有关 XML 列的信息)。如果在当前数据库中定义了该集合,则此值为 空引用(在 Visual Basic 中为 Nothing)(在 Visual Basic 中为 Nothing)。如果没有架构集合,则它也为空,这时 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionName 列也为空。 |
XmlSchemaCollectionName | 此 XML 实例的架构集合的名称(如果该行包含有关 XML 列的信息)。如果没有关联的架构集合,则此值为 空引用(在 Visual Basic 中为 Nothing)(在 Visual Basic 中为 Nothing)。如果此值为空,则 XmlSchemaCollectionDatabase 和XmlSchemaCollectionOwningSchema 列也为空。 |