SqlDataReader.GetSchemaTable 方法

定义

返回一个描述列元数据的 DataTable.SqlDataReader

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

返回

描述列元数据的 A DataTable

实现

例外

注解

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

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

false:列名不是别名。
IsAutoIncrement true:列以固定增量将值分配给新行。

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

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

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

false:列不是标识列。
IsKey true:该列是行集中的一组列之一,该列一起唯一标识该行。 设置为IsKeytrue唯一标识行集中的列集。 不需要此列集是最小列集。 可以从基表主键、唯一约束或唯一索引生成这组列。

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 关键字返回列的提供程序特定的数据类型。
ProviderType 列数据类型的指示器。 如果列的数据类型因行而异,则必须为 Object。 此列不能包含 null 值。
UdtAssemblyQualifiedName 如果列是用户定义的类型(UDT),则根据 AssemblyQualifiedName该列是 UDT 程序集的限定名称。 如果该列不是 UDT,则为 null。
XmlSchemaCollectionDatabase 如果行包含有关 XML 列的信息,则此 XML 实例的架构集合所在的数据库的名称。 如果集合在当前数据库中定义,则此值为 null (Visual Basic Nothing)。 如果没有架构集合,则它还为 null,在这种情况下 XmlSchemaCollectionName ,列 XmlSchemaCollectionOwningSchema 也为 null。
XmlSchemaCollectionName 如果行包含有关 XML 列的信息,则此 XML 实例的架构集合的名称。 如果没有关联的架构集合,则此值为 nullNothing Visual Basic)。 如果值为 null,则XmlSchemaCollectionDatabaseXmlSchemaCollectionOwningSchema列也为 null。
XmlSchemaCollectionOwningSchema 如果行包含有关 XML 列的信息,则拥有此 XML 实例的架构集合所在的关系架构。 如果集合在当前数据库中定义,则此值为 null (Visual Basic Nothing)。 如果没有架构集合,则它还为 null,在这种情况下 XmlSchemaCollectionDatabase ,列 XmlSchemaCollectionName 也为 null。

注释

若要确保元数据列返回正确的信息,必须使用参数设置为 进行调用。 否则,架构表中的某些列可能会返回默认、null 或不正确的数据。

适用于

另请参阅