SqlDataReader.GetSchemaTable 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个 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
返回
一个描述列元数据的 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 实例的架构集合所在的数据库的名称。 如果在当前数据库中定义了集合,则会null Nothing 在 Visual Basic) 中 (此值。 如果没有架构集合,则它也为 null,在这种情况下, XmlSchemaCollectionName 和 XmlSchemaCollectionOwningSchema 列也为 null。 |
XmlSchemaCollectionName | 如果行包含有关 XML 列的信息,则为此 XML 实例的架构集合的名称。 如果没有关联的架构集合,则会null Nothing 在 Visual Basic) 中 (此值。 如果值为 null,则 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionOwningSchema 列也为 null。 |
XmlSchemaCollectionOwningSchema | 如果行包含有关 XML 列的信息,则为此 XML 实例的架构集合所在的拥有关系架构。 如果在当前数据库中定义了集合,则会null Nothing 在 Visual Basic) 中 (此值。 如果没有架构集合,则它也为 null,在这种情况下, XmlSchemaCollectionDatabase 和 XmlSchemaCollectionName 列也为 null。 |
注意
若要确保元数据列返回正确的信息,必须在将 参数设置为 KeyInfo
的情况下behavior
调用 ExecuteReader 。 否则,架构表中的某些列可能会返回默认、null 或不正确的数据。