返回描述 DB2DataReader 的列元数据的 DataTable。
[Visual Basic]
Public Function GetSchemaTable() As DataTable
[C#]
public DataTable GetSchemaTable();
[C++]
public: DataTable* GetSchemaTable();
[JScript]
public function GetSchemaTable() : DataTable;
描述列元数据的 DataTable。
| 异常类型 | 条件 |
|---|---|
| InvalidOperationException | DB2®DataReader 已关闭。 |
GetSchemaTable 方法按以下顺序返回有关每个列的元数据。
| 字段名称 | 描述 |
|---|---|
| ColumnName | 列的名称(如果可确定列名);此名称可能不唯一。此名称始终反映当前视图或命令文本中列的最新名称。如果不能确定列名,那么将返回空值。 |
| ColumnOrdinal | 列的序号。对于行的书签列(如果存在),此值为零。其他列是从 1 开始编号的。此字段不能包含空值。 |
| ColumnSize | 列中值的最大可能长度。对于使用定长数据类型的列,此值就是该数据类型的大小。 |
| NumericPrecision | 如果 DB2 数据类型是数字数据类型,那么为列的最大精度;否则为空。 |
| NumericScale | 如果 DB2 数据类型为小数,那么为小数点右边的位数;否则为空。 |
| DataType | 映射到 DB2 数据类型的数据类型。 |
| ProviderType | DB2Type 枚举。 |
| IsLong | 如果列包含二进制大对象 (BLOB)(BLOB 包含非常大的数据),那么为 true。 |
| AllowDBNull | 如果使用者可以将列设置为空值,或者如果驱动程序不能确定使用者是否可以将列设置为空值,那么为 true;否则为 false。即使列不能被设置为空值,它也可以包含空值。 |
| IsReadOnly | 如果不能修改列,那么为 true;否则为 false。 |
| IsRowVersion | 如果列包含不能写入的持久行标识,那么对其进行设置。 |
| IsUnique | true 或 false,定义如下:
|
| IsKey | true 或 false,定义如下:
|
| IsAutoIncrement | 如果列以固定增量将值指定给新行,那么为 true,否则为 false。此列的缺省值为 false。 |
| BaseSchemaName | 如果可以确定基本模式名称,那么为包含列的数据库中模式的名称。如果不能确定基本模式名称,那么 BaseSchemaName 的值为空值。此列的缺省值为空值。 |
| BaseCatalogName | 如果可以确定目录名称,那么为包含列的数据库中目录的名称。如果不能确定基本目录名称,那么 BaseCatalogName 的值为空值。此列的缺省值为空值。 |
| BaseTableName | 如果可以确定表名称,那么为包含列的数据库中表或视图的名称。如果不能确定基本表名称,那么 BaseTableName 的值为空值。此列的缺省值为空值。 |
| BaseColumnName | 数据库中列的名称(如果存在)。如果使用了别名,那么此名称可能与 ColumnName 列中返回的列名不同。如果不能确定基本列名,或者如果行集列是派生的,但是与数据库中的列不完全相同,那么 BaseColumnName 列的值为空值。BaseColumnName 列的缺省值为空值。 |
| ModuleName |
|
将对结果集中的每列返回一行。
DB2CommandBuilder 需要正确地标识表的主键才能正常工作。如果未对查询结果中的每列返回 BaseTableName 列,那么 IBM® Data Server Provider for .NET 会尝试解析 SQL 语句以查找该查询涉及的表名。此方法对于 UPDATE、INSERT、DELETE 和简单 SELECT 语句可行,但是对于基于连接的存储过程或 SELECT 语句则不可行。如果此表中缺少某些或所有模式信息,DB2CommandBuilder 将不会正常工作,因为它没有足够的模式信息,不能自动生成正确的 INSERT、UPDATE 或 DELETE 语句。