SqlDataReader.GetSchemaTable 方法

返回一个 DataTable,它描述 SqlDataReader 的列元数据。

**命名空间:**System.Data.SqlClient
**程序集:**System.Data(在 system.data.dll 中)

语法

声明
Public Overrides Function GetSchemaTable As DataTable
用法
Dim instance As SqlDataReader
Dim returnValue As DataTable

returnValue = instance.GetSchemaTable
public override DataTable GetSchemaTable ()
public:
virtual DataTable^ GetSchemaTable () override
public DataTable GetSchemaTable ()
public override function GetSchemaTable () : DataTable

返回值

一个描述列元数据的 DataTable

异常

异常类型 条件

InvalidOperationException

SqlDataReader 是关闭的。

备注

对于 GetSchemaTable 方法,将按以下顺序返回关于每个列的元数据:

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)。如果没有架构集合,则它也为空,这时 XmlSchemaCollectionNameXmlSchemaCollectionOwningSchema 列也为空。

XmlSchemaCollectionOwningSchema

此 XML 实例的架构集合所在的所属关系架构(如果该行包含有关 XML 列的信息)。如果在当前数据库中定义了该集合,则此值为 空引用(在 Visual Basic 中为 Nothing)(在 Visual Basic 中为 Nothing)。如果没有架构集合,则它也为空,这时 XmlSchemaCollectionDatabaseXmlSchemaCollectionName 列也为空。

XmlSchemaCollectionName

此 XML 实例的架构集合的名称(如果该行包含有关 XML 列的信息)。如果没有关联的架构集合,则此值为 空引用(在 Visual Basic 中为 Nothing)(在 Visual Basic 中为 Nothing)。如果此值为空,则 XmlSchemaCollectionDatabaseXmlSchemaCollectionOwningSchema 列也为空。

提示

若要确保元数据列返回正确的信息,必须调用 ExecuteReader,并将 behavior 参数设置为 KeyInfo。否则,架构中的一些列可能返回默认的、空的或不正确的数据。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间