SqlCeDataReader.GetSchemaTable 方法

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

命名空间:  System.Data.SqlServerCe
程序集:  System.Data.SqlServerCe(在 System.Data.SqlServerCe.dll 中)

语法

声明
Public Overrides Function GetSchemaTable As DataTable
用法
Dim instance As SqlCeDataReader
Dim returnValue As DataTable

returnValue = instance.GetSchemaTable()
public override DataTable GetSchemaTable()
public:
virtual DataTable^ GetSchemaTable() override
abstract GetSchemaTable : unit -> DataTable 
override GetSchemaTable : unit -> DataTable 
public override function GetSchemaTable() : DataTable

返回值

类型:System.Data.DataTable
一个描述列元数据的 DataTable

实现

IDataReader.GetSchemaTable()

异常

异常 条件
InvalidOperationException

该操作无效。SqlCeDataReader 可能放置在结果集中的最后一行之后。

注释

如果 SqlCeDataReader 从多个基表中读取列,则 SqlCeDataReader 将不使用 IsKey 值填充架构表。这与使用 SELECT 查询时的情况相似:

SELECT FirstName, LastName, 1+2 FROM Employees  

此查询从两个不同的表(Northwind 数据库中的 Employees 表及为 1+2 创建的临时表)中读取列。

GetSchemaTable 方法映射到 OLE DB IColumnsRowset::GetColumnsRowset 方法,并按照以下顺序返回有关每一列的元数据:

架构表列

说明

ColumnName

列的名称。此名称可以不唯一。如果不能确定此名称,则会返回空值。此名称始终反映最近对当前视图或命令文本中的列进行的重命名。

ColumnOrdinal

列的序号。序号从零开始。SQL Server Compact 不支持书签。

ColumnSize

列中值的最大可能长度。对于采用固定长度数据类型的列,最大长度为该数据类型的大小。

NumericPrecision

如果 ProviderType 是数值数据类型,则它是列的最大精度。精度取决于列的定义。如果 ProviderType 不是数值数据类型,则它是空值。

NumericScale

如果 ProviderType 是 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC,则为小数点右侧的位数。否则,它为空值。

IsUnique

如果为 true,则基表(BaseTableName 中返回的表)中的任何两行在该列中都不能有相同的值。如果此列独自构成一个键,或如果有一个仅应用于该列的 UNIQUE 类型约束,那么 IsUnique 必须为 true。如果为 false,则在基表中,该列可以包含重复的值。该列的默认值为 false。

IsKey

如果为 true,则该列是行集中的一组列之一,这些列加在一起可唯一地标识行。IsKey 设置为 true 的列集必须能够唯一地标识行集中的行。不要求此列集是最小列集。这组列可以从基表主键、唯一约束或唯一索引生成。如果为 false,则不使用该列来唯一地标识行。

BaseColumnName

数据存储区中列的名称。如果无法确定基列名称,或者如果行集合列是从数据存储区中的某列派生的但却与该列不相同,则该名称为空值。该列的默认值为空值。

BaseTableName

包含该列的数据存储区中的表的名称。如果不能确定基表名,则该名称为空值。该列的默认值为空值。

DataType

映射到列的 .NET Framework 类型。

AllowDBNull

如果使用者可以将该列设置为空值,或者如果提供程序不能确定使用者是否可以将该列设置为空值,则设置该值。否则,不设置该值。即使列无法设置为空值,它仍可能包含空值。

ProviderType

列的数据类型的指示符。该列不能包含空值。

IsAutoIncrement

如果为 true,则列以固定的增量向新行赋值。如果为 false,则列不以固定的增量向新行赋值。该列的默认值为 false。

IsRowVersion

如果列包含无法向其写入的持久性行标识符,并且除了标识行外没有其他有意义的值,则应设置该值。

IsLong

如果列包含二进制长对象 (BLOB)(它包含非常长的数据),则设置该值。

IsReadOnly

如果为 true,则可以修改列。如果为 false,则不可修改列。

请参阅

参考

SqlCeDataReader 类

System.Data.SqlServerCe 命名空间