Export (0) Print
Expand All
0 out of 2 rated this helpful - Rate this topic

DataTableReader.GetSchemaTable Method

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

Namespace:  System.Data
Assembly:  System.Data (in System.Data.dll)
'Declaration
Public Overrides Function GetSchemaTable As DataTable

Return Value

Type: System.Data.DataTable
A DataTable that describes the column metadata.

Implements

IDataReader.GetSchemaTable
ExceptionCondition
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 Nothing 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 Nothing.

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 Sub TestGetSchemaTable()
   ' Set up the data adapter, using information from  
   ' the AdventureWorks sample database. 
   ' Modify the SQL expression to retrieve  
   ' data from a different table. 
   Dim adapter As SqlDataAdapter = _
      SetupDataAdapter("SELECT * FROM Sales.Customer")

   ' Fill the DataTable, retrieving all the schema information.
   adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
   Dim table As New DataTable
   adapter.Fill(table)

   ' Create the DataTableReader, and close it when done. 
   Using reader As New DataTableReader(table)
      ' Modify the column number to display information 
      ' about a column other than column 0.
      DisplaySchemaTableInfo(reader, 0)
   End Using

   Console.WriteLine()
   Console.WriteLine("Press Enter to finish.")
   Console.ReadLine()
End Sub 

Private Sub DisplaySchemaTableInfo( _
   ByVal reader As DataTableReader, ByVal ordinal As Integer)

   ' Given a DataTableReader, display schema 
   ' information about a particular column. 
   Try 
      Dim schemaTable As DataTable = reader.GetSchemaTable()
      Dim row As DataRow = schemaTable.Rows(ordinal)
      For Each col As DataColumn In schemaTable.Columns
         Console.WriteLine("{0}: {1}", _
            col.ColumnName, row(col.Ordinal))
      Next 
   Catch ex As IndexOutOfRangeException
      Console.WriteLine("{0} is an invalid column number.", _
         ordinal)
   End Try 
End Sub 

Private Function SetupDataAdapter( _
   ByVal sqlString As String) As SqlDataAdapter
   ' Assuming all the default settings, create a SqlDataAdapter 
   ' working with the AdventureWorks sample database that's  
   ' available with SQL Server. 
   Dim connectionString As String = _
      "Data Source=(local);" & _
      "Initial Catalog=AdventureWorks;" & _
      "Integrated Security=true" 
   Return New SqlDataAdapter(sqlString, connectionString)
End Function

.NET Framework

Supported in: 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.