DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable DataTableReader.GetSchemaTable Method

Определение

Возвращает объект DataTable, описывающий метаданные столбцов модуля чтения данных DataTableReader.Returns a DataTable that describes the column metadata of the DataTableReader.

public:
 override System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable

Возвраты

Объект DataTable, описывающий метаданные столбцов.A DataTable that describes the column metadata.

Исключения

Примеры

В следующем образце консольного приложения возвращает сведения схемы об указанном столбце.The following console application example retrieves schema information about the specified column. Передайте DisplaySchemaTableInfo процедуры DataTableReader и целое число, представляющее порядковый номер столбца в DataTableReader, и процедура выводит сведения о схеме в окно консоли.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);
}
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

Комментарии

Метод GetSchemaTable возвращает метаданные о каждом столбце в следующем порядке:The GetSchemaTable method returns metadata about each column in the following order:

Столбец DataReaderDataReader column ОписаниеDescription
ColumnNameColumnName Имя столбца, как он отображается в DataTable.The name of the column as it appears in the DataTable.
ColumnOrdinalColumnOrdinal Порядковый номер столбцаThe ordinal of the column
ColumnSizeColumnSize -1, если ColumnSize (или MaxLength) свойство DataColumn не может быть определено или не соответствующие; в противном случае — значение 0 или положительное целое число, которое содержит MaxLength значение.-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.
NumericPrecisionNumericPrecision Если типом столбца является числовым типом, это максимальная точность столбца.If the column type is a numeric type, this is the maximum precision of the column. Если тип столбца не является числовым типом данных, это значение null.If the column type is not a numeric data type, this is a null value.
NumericScaleNumericScale Если тип данных столбца имеет компонент масштаба, возвращает количество цифр справа от десятичной запятой.If column data type has a scale component, return the number of digits to the right of the decimal point. В противном случае возвращает значение null.Otherwise, return a null value.
DataTypeDataType Базовый тип столбца.The underlying type of the column.
ProviderTypeProviderType Указывает, какой тип данных столбца.The indicator of the column's data type. Если тип данных столбца меняется от строки к строке, это значение равно Object.If the data type of the column varies from row to row, this value is Object. Этот столбец не может содержать значение null.This column cannot contain a null value.
IsLongIsLong true Если тип данных столбца является String и его MaxLength свойство имеет значение -1.true if the data type of the column is String and its MaxLength property is -1. В противном случае — значение false.Otherwise, false.
AllowDBNullAllowDBNull true Если задано ограничение AllowDbNull значение true для столбца; в противном случае false.true if the AllowDbNull constraint is set to true for the column; otherwise, false.
IsReadOnlyIsReadOnly true Если столбец не может быть изменен; в противном случае false.true if the column cannot be modified; otherwise false.
IsRowVersionIsRowVersion false, для каждого столбца.false, for every column.
IsUniqueIsUnique true: Никакие две строки в DataTable может иметь то же значение в этом столбце.true: No two rows in the DataTable can have the same value in this column. IsUnique гарантированно будет значение true, если столбец представляет собой ключ, или если имеется ограничение типа UNIQUE, которое применяется только к этому столбцу.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: Столбец может содержать повторяющиеся значения в DataTable.false: The column can contain duplicate values in the DataTable. По умолчанию этот столбец имеет false.The default of this column is false.
IsKeyIsKey true: Столбец является одним из набора столбцов, взятые вместе, однозначно идентифицировать строку в DataTable.true: The column is one of a set of columns that, taken together, uniquely identify the row in the DataTable. Набор столбцов с IsKey присвоено true должен однозначно определять строку в 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. Этот набор столбцов может быть создан из DataTable первичный ключ, ограничение уникальности или уникальный индекс.This set of columns may be generated from a DataTable primary key, a unique constraint or a unique index. false: Столбец не требуется для уникальной идентификации строки.false: The column is not required to uniquely identify the row. Это значение равно true Если столбец участвует в одном или составного первичного ключа.This value is true if the column participates in a single or composite primary key. В противном случае его значение равно false.Otherwise, its value is false.
IsAutoIncrementIsAutoIncrement true: Столбец присваивает значения новым строкам с фиксированным приращением.true: The column assigns values to new rows in fixed increments. false: Столбец не присваивает значения новым строкам с фиксированным приращением.false: The column does not assign values to new rows in fixed increments. По умолчанию этот столбец имеет false.The default of this column is false.
BaseCatalogNameBaseCatalogName Имя каталога в хранилище данных, содержащей столбец.The name of the catalog in the data store that contains the column. Null Если не удается определить имя базового каталога.Null if the base catalog name cannot be determined. Значение по умолчанию для этого столбца — null значение.The default value for this column is a null value.
BaseSchemaNameBaseSchemaName Это значение всегда равно Null.This value is always Null.
BaseTableNameBaseTableName Имя DataTable.The name of the DataTable.
BaseColumnNameBaseColumnName Имя столбца в DataTable.The name of the column in the DataTable.
AutoIncrementSeedAutoIncrementSeed Значение DataTableв AutoIncrementSeed свойство.The value of the DataTable's AutoIncrementSeed property.
AutoIncrementStepAutoIncrementStep Значение DataTableв AutoIncrementStep свойство.The value of the DataTable's AutoIncrementStep property.
DefaultValueDefaultValue Значение DataColumnв DefaultValue свойство.The value of the DataColumn's DefaultValue property.
ВыражениеExpression Строка выражения, если текущий столбец является столбцом выражений и все столбцы, используемые в выражении принадлежат тому же T:System.Data.DataTable , содержащий столбец выражения; в противном случае null.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.
ColumnMappingColumnMapping MappingType Значение, связанное с DataColumn.The MappingType value associated with the DataColumn. Тип может принимать одно из Attribute, Element, Hidden, или SimpleContent.The type can be one of Attribute, Element, Hidden, or SimpleContent. Значение по умолчанию — Element.The default value is Element.
BaseTableNamespaceBaseTableNamespace Значение DataTableв Namespace свойство.The value of the DataTable's Namespace property.
BaseColumnNamespaceBaseColumnNamespace Значение DataColumnв Namespace свойство.The value of the DataColumn's Namespace property.

Применяется к