OleDbDataReader.GetSchemaTable 方法

定义

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

public:
 override System::Data::DataTable ^ GetSchemaTable();
public:
 virtual System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable? GetSchemaTable ();
public System.Data.DataTable GetSchemaTable ();
public override 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 映射到 OLE DB IColumnsRowset::GetColumnsRowset 方法,并按以下顺序返回有关每个列的元数据:

DataReader 列 OLE DB 列 ID 说明
ColumnName DBCOLUMN_NAME 列的名称;这可能不是唯一的。 如果这无法确定,则返回 NULL 值。 此名称始终反映当前视图或命令文本中列的最新重命名情况。
ColumnOrdinal DBCOLUMN_NUMBER 从零开始的列序号。 此列不能包含 NULL 值。
ColumnSize DBCOLUMN_COLUMNSIZE 列中值的最大可能长度。 对于使用固定长度数据类型的列,这是数据类型的大小。
NumericPrecision DBCOLUMN_PRECISION 如果 DbType 是数值数据类型,则这是列的最大精度。 数据类型为 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC 的列的精度取决于列的定义。 如果 DbType 不是数值数据类型,则这是一个 null 值。
NumericScale DBCOLUMN_SCALE 如果 DbType DBTYPE_DECIMAL或DBTYPE_NUMERIC,则这是小数点右侧的位数。 否则,此值为 null 值。
数据类型 映射到列的.NET Framework类型。
ProviderType DBCOLUMN_TYPE 列的数据类型的指示符。 如果列的数据类型因行而异,则必须DBTYPE_VARIANT。 此列不能包含 NULL 值。
IsLong DBCOLUMNFLAGS_ISLONG 如果列包含包含很长数据的二进制长对象 (BLOB) ,则提供程序设置DBCOLUMNFLAGS_ISLONG。 很长数据的定义是特定于提供程序的。 此标志的设置对应于数据类型的PROVIDER_TYPES行集中IS_LONG列的值。
AllowDBNull DBCOLUMNFLAGS_ISNULLABLE 如果使用者可以将列设置为 null 值,或者提供程序无法确定使用者是否可以将列设置为 null 值,则提供程序设置DBCOLUMNFLAGS_ISNULLABLE。 即使无法将列设置为 NULL 值,列也可以包含 NULL 值。
IsReadOnly DBCOLUMNFLAGS_WRITE true 如果无法修改列,则为 ;否则为 false。 如果提供程序设置了 DBCOLUMNFLAGS_WRITE 或 DBCOLUMNFLAGS_WRITEUNKNOWN 标志,则假定该列是可写的。
IsRowVersion DBCOLUMNFLAGS_ISROWID 如果列包含无法写入的永久性行标识符,并且除了标识行之外没有有意义的值,则提供程序设置DBCOLUMNFLAGS_ISROWID。
IsUnique DBCOLUMN_ISUNIQUE VARIANT_TRUE:基表中的两行(BaseTableName 中返回的表)不能在此列中具有相同的值。 如果列本身表示键,或者存在仅适用于此列的 UNIQUE 类型的约束,则保证 IsUnique VARIANT_TRUE。

VARIANT_FALSE:该列可以包含基表中的重复值。 此列的默认值为VARIANT_FALSE。
IsKey DBCOLUMN_KEYCOLUMN VARIANT_TRUE:列是行集中一组唯一标识行的列之一。 IsKey 设置为 VARIANT_TRUE 的列集必须唯一标识行集中的行。 不要求这组列是最小组列。 此组列可能从一个基表主键、唯一约束或唯一索引生成。

VARIANT_FALSE:不需要列来唯一标识行。
IsAutoIncrement DBCOLUMN_ISAUTOINCREMENT VARIANT_TRUE:列以固定增量向新行赋值。

VARIANT_FALSE:列不以固定增量向新行赋值。 此列的默认值为VARIANT_FALSE。
BaseSchemaName DBCOLUMN_BASESCHEMANAME 包含该列的数据存储区中架构的名称。 如果无法确定基本架构名称,则为 NULL 值。 此列的默认值为 null 值。
BaseCatalogName DBCOLUMN_BASECATALOGNAME 包含该列的数据存储区中的目录的名称。 如果无法确定基本目录名称,则为 NULL 值。 此列的默认值为 null 值。
BaseTableName DBCOLUMN_BASETABLENAME 包含该列的数据存储区中的表或视图的名称。 如果无法确定基表名称,则为 NULL 值。 此列的默认值为 null 值。
BaseColumnName DBCOLUMN_BASECOLUMNNAME 数据存储区中列的名称。 如果使用别名,这可能不同于 ColumnName 列中返回的列名。 如果无法确定基列名称,或者行集列派生但与数据存储中的列不同,则为 null 值。 此列的默认值为 null 值。

注意

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

适用于

另请参阅