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
truefalse,定义如下:
  • true。在BaseTableName,中返回的基表中,不能有两行在此列中具有相同的值。 如果列本身构成键或者如果存在仅适用于此列的类型为 UNIQUE 的约束,那么 IsUnique 列的值一定为 true
  • false。 基本表中的列可能包含重复值。 IsUnique 列的缺省值为 false。 对于具有组合主键的表,IsUnique 列的值将报告为 false,即使一列或多列中存在唯一约束也是如此。
IsKey truefalse,定义如下:
  • true。 该列是行集中的一组列之一,当合并在一起时,它唯一地标识行集中的行。 此列集无需是最小列集。 可以从基本表主键、唯一约束或唯一索引生成此列集。
  • false。 不需要列来唯一地标识行。
IsAutoIncrement 如果列以固定增量将值指定给新行,那么为 true,否则为 false。 此列的缺省值为 false
BaseSchemaName 如果可以确定基本模式名称,那么为包含列的数据库中模式的名称。 如果不能确定基本模式名称,那么 BaseSchemaName 的值为空值。 此列的缺省值为空值。
BaseCatalogName 如果可以确定目录名称,那么为包含列的数据库中目录的名称。 如果不能确定基本目录名称,那么 BaseCatalogName 的值为空值。 此列的缺省值为空值。
BaseTableName 如果可以确定表名称,那么为包含列的数据库中表或视图的名称。 如果不能确定基本表名称,那么 BaseTableName 的值为空值。 此列的缺省值为空值。
BaseColumnName 数据库中列的名称(如果存在)。 如果使用了别名,那么此名称可能与 ColumnName 列中返回的列名不同。 如果不能确定基本列名,或者如果行集列是派生的,但是与数据库中的列不完全相同,那么 BaseColumnName 列的值为空值。 BaseColumnName 列的缺省值为空值。
ModuleName
  • DB2DataReader.GetSchemaTable() 调用返回的模式数据表现在将包括可空 ModuleName 列,该列将在使用属于模块的过程时设置。 此新列 ModuleName 将插入到 DataTable 结尾以便按序数访问该值的应用程序不受影响。 因此,过程 schema.module.procname 的标准名称将相应分割为模式数据表的 3 列:BaseSchemaName、ModuleName 和 BaseTableName。
  • DB2Connection.GetSchema() 调用返回的模式数据表现在将报告 Procedures 集合和 ProcedureParameters 集合的模块名称。 此外,对其中每个集合的设置的限制将扩充以包括模块名称作为其中一个搜索参数。

将对结果集中的每列返回一行。

DB2CommandBuilder 需要正确标识表的主键才能正常工作。 如果没有为查询结果中的每一列返回BaseTableName列,IBM®Data Server Provider for .NET 会尝试解析 SQL 语句以查找查询中涉及的表名。 此方法对于 UPDATE、INSERT、DELETE 和简单 SELECT 语句可行,但是对于基于连接的存储过程或 SELECT 语句则不可行。 如果表中缺少部分或全部模式信息,那么 DB2CommandBuilder 无法正常工作,因为它没有足够的模式信息来自动生成正确的 INSERT , UPDATE 或 DELETE 语句。