SqlDataReader.GetSchemaTable 方法     
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个 DataTable,它描述 SqlDataReader 的列元数据。
public:
 virtual System::Data::DataTable ^ GetSchemaTable();public:
 override System::Data::DataTable ^ GetSchemaTable();public System.Data.DataTable GetSchemaTable();public override System.Data.DataTable GetSchemaTable();abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTableoverride this.GetSchemaTable : unit -> System.Data.DataTablePublic Function GetSchemaTable () As DataTablePublic Overrides Function GetSchemaTable () As DataTable返回
一个描述列元数据的 DataTable。
实现
例外
注解
方法 GetSchemaTable 返回有关每列的以下元数据:
| DataReader 列 | 说明 | 
|---|---|
| AllowDBNull | 如果使用者可以将列设置为 null 值,或者提供程序无法确定使用者是否可以将列设置为 null 值,则设置 。 否则不设置。 即使无法将列设置为 NULL 值,列也可以包含 NULL 值。 | 
| BaseCatalogName | 包含该列的数据存储区中的目录的名称。 如果无法确定基本目录名称,则为 NULL。 此列的默认值为 null 值。 | 
| BaseColumnName | 数据存储区中列的名称。 如果使用别名,这可能不同于 ColumnName 列中返回的列名。 如果无法确定基列名称,或者行集列派生(但不完全相同)数据存储中的列,则为 null 值。 此列的默认值为 null 值。 | 
| BaseSchemaName | 包含该列的数据存储区中架构的名称。 如果无法确定基本架构名称,则为 NULL 值。 此列的默认值为 null 值。 | 
| BaseServerName | 使用的 Microsoft SQL ServerSqlDataReader实例的名称。 | 
| BaseTableName | 包含该列的数据存储区中的表或视图的名称。 如果无法确定基表名称,则为 NULL 值。 此列的默认值为 null 值。 | 
| ColumnName | 列的名称;这可能不是唯一的。 如果这无法确定,则返回 NULL 值。 此名称始终反映当前视图或命令文本中列的最新重命名情况。 | 
| ColumnOrdinal | 从零开始的列序号。 此列不能包含 NULL 值。 | 
| ColumnSize | 列中值的最大可能长度。 对于使用固定长度数据类型的列,这是数据类型的大小。 对于 nvarchar(MAX)存储在 SQL Server 数据库中的 、varchar(MAX)和varbinary(MAX)列,最大大小为 2GB。 如果这些列作为文件进行存储和访问,则文件系统将施加最大大小限制。 在连接字符串中使用Type System Version关键字 (keyword) 时,此值会更改。  对于新类型,它们表示为下层类型。 MAX 数据类型返回的正常 4k 和nvarchar8000 的正常值varchar。 有关详细信息,请参阅 Transact-SQL 参考。 | 
| DataTypeName | 返回一个字符串,表示指定列的数据类型。 | 
| IsAliased | true:列名是别名。false:列名不是别名。 | 
| IsAutoIncrement | true:列以固定增量向新行赋值。false:该列不以固定增量向新行赋值。 此列的默认值为false。 | 
| IsColumnSet | true:列是作为列集成员的稀疏列。 | 
| IsExpression | true:列是表达式。false:列不是表达式。 | 
| IsHidden | true:列处于隐藏状态。false:列未隐藏。 | 
| IsIdentity | true:列是标识列。false:列不是标识列。 | 
| IsKey | true:列是行集中唯一标识行的一组列之一。 将IsKey设置为true的一组列必须唯一标识行集中的某行。 不要求这组列是最小组列。 此组列可能从一个基表主键、唯一约束或唯一索引生成。false:不需要列来唯一标识行。 | 
| IsLong | true:该列包含包含很长数据的二进制长对象 (BLOB) 。 很长数据的定义是特定于提供程序的。false:列不包含包含很长数据的二进制长对象 (BLOB) 。 | 
| IsReadOnly | true:无法修改列。false:可以修改列。 | 
| IsRowVersion | true:列包含无法写入的永久性行标识符,并且除了标识行之外没有有意义的值。false:该列不包含无法写入的永久性行标识符,并且除了标识行之外没有有意义的值。 | 
| IsUnique | true:列的类型timestamp为 。false:列不是 类型timestamp。 | 
| NonVersionedProviderType | 列的类型,而不考虑连接字符串中指定的当前 Type System Version。 返回的值来自 SqlDbType 枚举。 | 
| NumericPrecision | 如果 ProviderType是数值数据类型,则表示列的最大精度。 精度取决于列的定义。 如果ProviderType不是数值数据类型,则为 255。 | 
| NumericScale | 如果 ProviderTypeDBTYPE_DECIMAL 或 DBTYPE_NUMERIC,则为小数点右侧的位数。 否则,为 255。 | 
| ProviderSpecificDataType | 根据 Type System Version连接字符串中的关键字 (keyword) 返回列的提供程序特定的数据类型。 | 
| ProviderType | 列的数据类型的指示符。 如果列的数据类型因行而异,则必须为 Object。 此列不能包含 NULL 值。 | 
| UdtAssemblyQualifiedName | 如果列是 UDT) (用户定义类型,则根据 AssemblyQualifiedName,这是 UDT 程序集的限定名称。 如果该列不是 UDT,则为 null。 | 
| XmlSchemaCollectionDatabase | 如果行包含有关 XML 列的信息,则为此 XML 实例的架构集合所在的数据库的名称。 如果在当前数据库中定义了集合,则会 nullNothing在 Visual Basic) 中 (此值。 如果没有架构集合,则它也为 null,在这种情况下,XmlSchemaCollectionName和XmlSchemaCollectionOwningSchema列也为 null。 | 
| XmlSchemaCollectionName | 如果行包含有关 XML 列的信息,则为此 XML 实例的架构集合的名称。 如果没有关联的架构集合,则会 nullNothing在 Visual Basic) 中 (此值。 如果值为 null,则XmlSchemaCollectionDatabase和XmlSchemaCollectionOwningSchema列也为 null。 | 
| XmlSchemaCollectionOwningSchema | 如果行包含有关 XML 列的信息,则为此 XML 实例的架构集合所在的拥有关系架构。 如果在当前数据库中定义了集合,则会 nullNothing在 Visual Basic) 中 (此值。 如果没有架构集合,则它也为 null,在这种情况下,XmlSchemaCollectionDatabase和XmlSchemaCollectionName列也为 null。 | 
注意
若要确保元数据列返回正确的信息,必须在将 参数设置为 KeyInfo的情况下behavior调用 ExecuteReader 。 否则,架构表中的某些列可能会返回默认、null 或不正确的数据。