SqlDataReader.GetSchemaTable 方法

定义

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

public:
 override System::Data::DataTable ^ GetSchemaTable();
public:
 virtual System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
public System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable
Public Function GetSchemaTable () As DataTable

返回

一个描述列元数据的 DataTable

实现

例外

注解

方法 GetSchemaTable 返回有关每列的以下元数据:

DataReader 列 说明
AllowDBNull 如果使用者可以将列设置为 null 值,或者提供程序无法确定使用者是否可以将列设置为 null 值,则设置 。 否则不设置。 即使无法将列设置为 NULL 值,列也可以包含 NULL 值。
BaseCatalogName 包含该列的数据存储区中的目录的名称。 如果无法确定基本目录名称,则为 NULL。 此列的默认值为 null 值。
BaseColumnName 数据存储区中列的名称。 如果使用别名,这可能不同于 ColumnName 列中返回的列名。 如果无法确定基列名称,或者行集列派生(但不完全相同)数据存储中的列,则为 null 值。 此列的默认值为 null 值。
BaseSchemaName 包含该列的数据存储区中架构的名称。 如果无法确定基本架构名称,则为 NULL 值。 此列的默认值为 null 值。
BaseServerName 使用的 Microsoft SQL ServerSqlDataReader实例的名称。
BaseTableName 包含该列的数据存储区中的表或视图的名称。 如果无法确定基表名称,则为 NULL 值。 此列的默认值为 null 值。
ColumnName 列的名称;这可能不是唯一的。 如果这无法确定,则返回 NULL 值。 此名称始终反映当前视图或命令文本中列的最新重命名情况。
ColumnOrdinal 从零开始的列序号。 此列不能包含 NULL 值。
ColumnSize 列中值的最大可能长度。 对于使用固定长度数据类型的列,这是数据类型的大小。 对于nvarchar(MAX)存储在 SQL Server 数据库中的 、 varchar(MAX)varbinary(MAX) 列,最大大小为 2GB。 如果这些列作为文件进行存储和访问,则文件系统将施加最大大小限制。 在连接字符串中使用Type System Version关键字 (keyword) 时,此值会更改。 对于新类型,它们表示为下层类型。 MAX 数据类型返回的正常 4k 和 nvarchar 8000 的正常值 varchar。 有关详细信息,请参阅 Transact-SQL 参考
DataTypeName 返回一个字符串,表示指定列的数据类型。
IsAliased true:列名是别名。

false:列名不是别名。
IsAutoIncrement true:列以固定增量向新行赋值。

false:该列不以固定增量向新行赋值。 此列的默认值为 false
IsColumnSet true:列是作为列集成员的稀疏列。
IsExpression true:列是表达式。

false:列不是表达式。
IsHidden true:列处于隐藏状态。

false:列未隐藏。
IsIdentity true:列是标识列。

false:列不是标识列。
IsKey true:列是行集中唯一标识行的一组列之一。 将 IsKey 设置为 true 的一组列必须唯一标识行集中的某行。 不要求这组列是最小组列。 此组列可能从一个基表主键、唯一约束或唯一索引生成。

false:不需要列来唯一标识行。
IsLong true:该列包含包含很长数据的二进制长对象 (BLOB) 。 很长数据的定义是特定于提供程序的。

false:列不包含包含很长数据的二进制长对象 (BLOB) 。
IsReadOnly true:无法修改列。

false:可以修改列。
IsRowVersion true:列包含无法写入的永久性行标识符,并且除了标识行之外没有有意义的值。

false:该列不包含无法写入的永久性行标识符,并且除了标识行之外没有有意义的值。
IsUnique true:列的类型 timestamp为 。

false:列不是 类型 timestamp
NonVersionedProviderType 列的类型,而不考虑连接字符串中指定的当前Type System Version。 返回的值来自 SqlDbType 枚举。
NumericPrecision 如果 ProviderType 是数值数据类型,则表示列的最大精度。 精度取决于列的定义。 如果 ProviderType 不是数值数据类型,则为 255。
NumericScale 如果 ProviderType DBTYPE_DECIMAL 或 DBTYPE_NUMERIC,则为小数点右侧的位数。 否则,为 255。
ProviderSpecificDataType 根据Type System Version连接字符串中的关键字 (keyword) 返回列的提供程序特定的数据类型。
ProviderType 列的数据类型的指示符。 如果列的数据类型因行而异,则必须为 Object。 此列不能包含 NULL 值。
UdtAssemblyQualifiedName 如果列是 UDT) (用户定义类型,则根据 AssemblyQualifiedName,这是 UDT 程序集的限定名称。 如果该列不是 UDT,则为 null。
XmlSchemaCollectionDatabase 如果行包含有关 XML 列的信息,则为此 XML 实例的架构集合所在的数据库的名称。 如果在当前数据库中定义了集合,则会nullNothing在 Visual Basic) 中 (此值。 如果没有架构集合,则它也为 null,在这种情况下, XmlSchemaCollectionNameXmlSchemaCollectionOwningSchema 列也为 null。
XmlSchemaCollectionName 如果行包含有关 XML 列的信息,则为此 XML 实例的架构集合的名称。 如果没有关联的架构集合,则会nullNothing在 Visual Basic) 中 (此值。 如果值为 null,则 XmlSchemaCollectionDatabaseXmlSchemaCollectionOwningSchema 列也为 null。
XmlSchemaCollectionOwningSchema 如果行包含有关 XML 列的信息,则为此 XML 实例的架构集合所在的拥有关系架构。 如果在当前数据库中定义了集合,则会nullNothing在 Visual Basic) 中 (此值。 如果没有架构集合,则它也为 null,在这种情况下, XmlSchemaCollectionDatabaseXmlSchemaCollectionName 列也为 null。

注意

若要确保元数据列返回正确的信息,必须在将 参数设置为 KeyInfo的情况下behavior调用 ExecuteReader 。 否则,架构表中的某些列可能会返回默认、null 或不正确的数据。

适用于

另请参阅