DB2DataReader.GetSchemaTable 方法
返回描述 DB2DataReader的列元数据的 DataTable 。
- 名称空间:
IBM.Data.DB2
- 组合件:
IBM.Data.DB2
(在IBM.Data.DB2.dll
中)
语法
[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 | Db2类型枚举。 |
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 语句。