DataTableReader::GetSchemaTable Method ()
Returns a DataTable that describes the column metadata of the DataTableReader.
Assembly: System.Data (in System.Data.dll)
Implements
IDataReader::GetSchemaTable()| Exception | Condition |
|---|---|
| InvalidOperationException | The DataTableReader is closed. |
The GetSchemaTable method returns metadata about each column in the following order:
DataReader column | Description |
|---|---|
ColumnName | The name of the column as it appears in the DataTable. |
ColumnOrdinal | The ordinal of the column |
ColumnSize | -1 if the ColumnSize (or MaxLength) property of the DataColumn cannot be determined or is not relevant; otherwise, 0 or a positive integer that contains the MaxLength value. |
NumericPrecision | If the column type is a numeric type, this is the maximum precision of the column. If the column type is not a numeric data type, this is a null value. |
NumericScale | If column data type has a scale component, return the number of digits to the right of the decimal point. Otherwise, return a null value. |
DataType | The underlying type of the column. |
ProviderType | The indicator of the column's data type. If the data type of the column varies from row to row, this value is Object. This column cannot contain a null value. |
IsLong | true if the data type of the column is String and its MaxLength property is -1. Otherwise, false. |
AllowDBNull | true if the AllowDbNull constraint is set to true for the column; otherwise, false. |
IsReadOnly | true if the column cannot be modified; otherwise false. |
IsRowVersion | false, for every column. |
IsUnique | true: No two rows in the DataTable can have the same value in this column. IsUnique is guaranteed to be true if the column represents a key by itself or if there is a constraint of type UNIQUE that applies only to this column. false: The column can contain duplicate values in the DataTable. The default of this column is false. |
IsKey | true: The column is one of a set of columns that, taken together, uniquely identify the row in the DataTable. The set of columns with IsKey set to true must uniquely identify a row in the DataTable. There is no requirement that this set of columns is a minimal set of columns. This set of columns may be generated from a DataTable primary key, a unique constraint or a unique index. false: The column is not required to uniquely identify the row. This value is true if the column participates in a single or composite primary key. Otherwise, its value is false. |
IsAutoIncrement | true: The column assigns values to new rows in fixed increments. false: The column does not assign values to new rows in fixed increments. The default of this column is false. |
BaseCatalogName | The name of the catalog in the data store that contains the column. Null if the base catalog name cannot be determined. The default value for this column is a null value. |
BaseSchemaName | This value is always Null. |
BaseTableName | The name of the DataTable. |
BaseColumnName | The name of the column in the DataTable. |
AutoIncrementSeed | The value of the DataTable's AutoIncrementSeed property. |
AutoIncrementStep | The value of the DataTable's AutoIncrementStep property. |
DefaultValue | The value of the DataColumn's DefaultValue property. |
Expression | The expression string, if the current column is an expression column and all columns used in the expression belong to the same T:System.Data.DataTable that contains the expression column; otherwise null. |
ColumnMapping | The MappingType value associated with the DataColumn. The type can be one of Attribute, Element, Hidden, or SimpleContent. The default value is Element. |
BaseTableNamespace | |
BaseColumnNamespace | The value of the DataColumn's Namespace property. |
The following console application example retrieves schema information about the specified column. Pass the DisplaySchemaTableInfo procedure a DataTableReader and an integer representing the ordinal position of a column within the DataTableReader, and the procedure outputs schema information to the console window.
Available since 2.0