Export (0) Print
Expand All

DataTableReader.GetSchemaTable Method

Note: This method is new in the .NET Framework version 2.0.

Returns a DataTable that describes the column metadata of the DataTableReader.

Namespace: System.Data
Assembly: System.Data (in system.data.dll)

public override DataTable GetSchemaTable ()
public DataTable GetSchemaTable ()
public override function GetSchemaTable () : DataTable

Return Value

A DataTable that describes the column metadata.

Exception typeCondition

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 a null reference (Nothing in Visual Basic) 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 .P:System.Data.DataColumn.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 a null reference (Nothing in Visual Basic).

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

The value of the DataTable's Namespace property.

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.

private static void TestGetSchemaTable()
{
    // Set up the data adapter, using information from 
    // the AdventureWorks sample database.
    // Modify the SQL expression to retrieve 
    // data from a different table.
    SqlDataAdapter adapter = 
        SetupDataAdapter("SELECT * FROM Sales.Customer");

    // Fill the DataTable, retrieving all the schema information.
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    DataTable table = new DataTable();
    adapter.Fill(table);
     
    // Create the DataTableReader, and close it when done.
    using (DataTableReader reader = new DataTableReader(table))
    {
        // Modify the column number to display information
        // about a column other than column 0.
        DisplaySchemaTableInfo(reader, 0);
    

    Console.WriteLine();
    Console.WriteLine("Press Enter to finish.");
    Console.ReadLine();


private static void DisplaySchemaTableInfo(
        DataTableReader reader, int ordinal)
{
    // Given a DataTableReader, display schema
    // information about a particular column.
    try
    {
        DataTable schemaTable = reader.GetSchemaTable();
        DataRow row = schemaTable.Rows[ordinal];
        foreach (DataColumn col in schemaTable.Columns)
        {
            Console.WriteLine("{0: {1", 
                col.ColumnName, row[col.Ordinal]);
        
    
    catch (IndexOutOfRangeException ex)
    {
        Console.WriteLine("{0 is an invalid column number.", 
            ordinal);
    


private static SqlDataAdapter SetupDataAdapter(String sqlString)
{
    // Assuming all the default settings, create a 
    // SqlDataAdapter working with the AdventureWorks
    // sample database that's available with 
    // SQL Server.
    String connectionString = 
        "Data source=(local);initial catalog=AdventureWorks;" +
        "Integrated Security=True";
    return new SqlDataAdapter(sqlString, connectionString);


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

.NET Compact Framework

Supported in: 2.0

Community Additions

ADD
Show:
© 2014 Microsoft