DataTableReader.GetSchemaTable Methode

Definition

Gibt eine DataTable zurück, die die Spaltenmetadaten des DataTableReader beschreibt.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

Gibt zurück

Eine DataTable, die die Spaltenmetadaten beschreibt.A DataTable that describes the column metadata.

Ausnahmen

Der DataTableReader ist geschlossen.The DataTableReader is closed.

Beispiele

Im folgenden Beispiel für eine Konsolenanwendung werden Schema Informationen zur angegebenen Spalte abgerufen.The following console application example retrieves schema information about the specified column. Übergeben Sie die DisplaySchemaTableInfo Prozedur a DataTableReader und eine ganze Zahl, die die Ordnungsposition einer Spalte innerhalb der DataTableReaderdarstellt, und die Prozedur gibt Schema Informationen im Konsolenfenster aus.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

Hinweise

Die getschemabel-Methode gibt Metadaten zu jeder Spalte in der folgenden Reihenfolge zurück:The GetSchemaTable method returns metadata about each column in the following order:

DataReader-SpalteDataReader column BeschreibungDescription
SpaltennameColumnName Der Name der Spalte, wie Sie in der DataTableangezeigt wird.The name of the column as it appears in the DataTable.
ColumnOrdinalColumnOrdinal Die Ordnungszahl der Spalte.The ordinal of the column
ColumnSizeColumnSize -1, wenn die ColumnSize (oder MaxLength)-Eigenschaft des DataColumn nicht bestimmt werden kann oder nicht relevant ist. andernfalls 0 oder eine positive ganze Zahl, die den MaxLength Wert enthält.-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 Wenn es sich bei dem Spaltentyp um einen numerischen Typ handelt, ist dies die maximale Genauigkeit der Spalte.If the column type is a numeric type, this is the maximum precision of the column. Wenn der Spaltentyp kein numerischer Datentyp ist, ist dies ein NULL-Wert.If the column type is not a numeric data type, this is a null value.
NumericScaleNumericScale Wenn der Spaltendatentyp eine Skalierungs Komponente aufweist, wird die Anzahl der Ziffern rechts vom Dezimaltrennzeichen zurückgegeben.If column data type has a scale component, return the number of digits to the right of the decimal point. Andernfalls wird ein NULL-Wert zurückgegeben.Otherwise, return a null value.
DatentypDataType Der zugrunde liegende Typ der Spalte.The underlying type of the column.
ProviderTypeProviderType Der Zähler des Datentyps der Spalte.The indicator of the column's data type. Wenn sich der Datentyp der Spalte von Zeile zu Zeile unterscheidet, wird dieser Wert Object.If the data type of the column varies from row to row, this value is Object. Diese Spalte kann keinen NULL-Wert enthalten.This column cannot contain a null value.
IsLongIsLong true, wenn der Datentyp der Spalte String ist und dessen MaxLength-Eigenschaft-1 ist.true if the data type of the column is String and its MaxLength property is -1. Andernfalls ist der Wert false.Otherwise, false.
AllowDBNullAllowDBNull true, wenn die AllowDBNull-Einschränkung für die Spalte auf true festgelegt ist. Andernfalls false.true if the AllowDbNull constraint is set to true for the column; otherwise, false.
IsReadOnlyIsReadOnly true, wenn die Spalte nicht geändert werden kann. Andernfalls false.true if the column cannot be modified; otherwise false.
IsRowVersionIsRowVersion falsefür jede Spalte.false, for every column.
IsUniqueIsUnique true: in dieser Spalte können keine zwei Zeilen in der DataTable denselben Wert aufweisen.true: No two rows in the DataTable can have the same value in this column. IsUnique ist garantiert true, wenn die Spalte einen Schlüssel allein darstellt, oder wenn eine Einschränkung vom Typ UNIQUE vorliegt, die nur für diese Spalte gilt.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: die Spalte kann doppelte Werte in der DataTableenthalten.false: The column can contain duplicate values in the DataTable. Der Standardwert dieser Spalte ist false.The default of this column is false.
IsKeyIsKey true: bei der Spalte handelt es sich um eine Gruppe von Spalten, die die Zeile in der DataTableeindeutig identifizieren.true: The column is one of a set of columns that, taken together, uniquely identify the row in the DataTable. Der Satz von Spalten, bei dem IsKey auf true festgelegt ist, muss eine Zeile im DataTableeindeutig identifizieren.The set of columns with IsKey set to true must uniquely identify a row in the DataTable. Es ist nicht erforderlich, dass es sich bei dieser Menge Spalten um eine minimale Spaltenmenge handelt.There is no requirement that this set of columns is a minimal set of columns. Dieser Spalten Satz kann aus einem DataTable Primärschlüssel, einer UNIQUE-Einschränkung oder einem eindeutigen Index generiert werden.This set of columns may be generated from a DataTable primary key, a unique constraint or a unique index. false: die Spalte ist nicht erforderlich, um die Zeile eindeutig zu identifizieren.false: The column is not required to uniquely identify the row. Dieser Wert ist true, wenn die Spalte an einem einzelnen oder zusammengesetzten Primärschlüssel beteiligt ist.This value is true if the column participates in a single or composite primary key. Andernfalls ist der Wert false.Otherwise, its value is false.
IsAutoIncrementIsAutoIncrement true: die Spalte weist neuen Zeilen in fester Inkrementen Werte zu.true: The column assigns values to new rows in fixed increments. false: die Spalte weist neuen Zeilen in fester Inkrementen keine Werte zu.false: The column does not assign values to new rows in fixed increments. Der Standardwert dieser Spalte ist false.The default of this column is false.
BaseCatalogNameBaseCatalogName Der Name des Katalogs im Datenspeicher, der die Spalte enthält.The name of the catalog in the data store that contains the column. Null, wenn der Name des Basis Katalogs nicht bestimmt werden kann.Null if the base catalog name cannot be determined. Der Standardwert für diese Spalte ist ein null Wert.The default value for this column is a null value.
BaseSchemaNameBaseSchemaName Dieser Wert ist immer Null.This value is always Null.
BaseTableNameBaseTableName Der Name des DataTable-Objekts.The name of the DataTable.
BaseColumnNameBaseColumnName Der Name der Spalte in der DataTable.The name of the column in the DataTable.
AutoIncrementSeedAutoIncrementSeed Der Wert der AutoIncrementSeed Eigenschaft des DataTable.The value of the DataTable's AutoIncrementSeed property.
AutoIncrementStepAutoIncrementStep Der Wert der AutoIncrementStep Eigenschaft des DataTable.The value of the DataTable's AutoIncrementStep property.
DefaultValueDefaultValue Der Wert der DefaultValue Eigenschaft des DataColumn.The value of the DataColumn's DefaultValue property.
AusdruckExpression Die Ausdrucks Zeichenfolge, wenn die aktuelle Spalte eine Ausdrucks Spalte ist und alle Spalten, die im Ausdruck verwendet werden, zu demselben T:System.Data.DataTable gehören, der die Ausdrucks Spalte enthält. Andernfalls 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 Der MappingType Wert, der der DataColumnzugeordnet ist.The MappingType value associated with the DataColumn. Der Typ kann "Attribute", "Element", "Hidden" oder "SimpleContent" sein.The type can be one of Attribute, Element, Hidden, or SimpleContent. Der Standardwert ist Element.The default value is Element.
BaseTableNamespaceBaseTableNamespace Der Wert der Namespace Eigenschaft des DataTable.The value of the DataTable's Namespace property.
BaseColumnNamespaceBaseColumnNamespace Der Wert der Namespace Eigenschaft des DataColumn.The value of the DataColumn's Namespace property.

Gilt für: