Teilen über


DataTableReader.GetSchemaTable Methode

Definition

Gibt eine DataTable zurück, die die Spaltenmetadaten des DataTableReader beschreibt.

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.

Ausnahmen

Beispiele

Im folgenden Konsolenanwendungsbeispiel werden Schemainformationen zu der angegebenen Spalte abgerufen. Übergeben Sie die DisplaySchemaTableInfo Prozedur a DataTableReader und eine ganze Zahl, die die Ordnungsposition einer Spalte in der DataTableReaderdarstellt, und die Prozedur gibt Schemainformationen an das Konsolenfenster aus.

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 GetSchemaTable-Methode gibt Metadaten zu jeder Spalte in der folgenden Reihenfolge zurück:

DataReader-Spalte BESCHREIBUNG
ColumnName Der Name der Spalte, wie er in DataTableangezeigt wird.
ColumnOrdinal Die Ordnungszahl der Spalte
ColumnSize -1, wenn die ColumnSize Eigenschaft (oder MaxLength) des DataColumn nicht bestimmt werden kann oder nicht relevant ist, andernfalls 0 oder eine positive ganze Zahl, die den MaxLength Wert enthält.
NumericPrecision Wenn der Spaltentyp ein numerischer Typ ist, ist dies die maximale Genauigkeit der Spalte. Wenn der Spaltentyp kein numerischer Datentyp ist, ist dies ein NULL-Wert.
NumericScale Wenn der Spaltendatentyp über eine Skalierungskomponente verfügt, geben Sie die Anzahl der Ziffern rechts neben dem Dezimalpunkt zurück. Andernfalls wird ein NULL-Wert zurückgegeben.
DataType Der zugrunde liegende Typ der Spalte.
ProviderType Der Zähler des Datentyps der Spalte. Wenn der Datentyp der Spalte von Zeile zu Zeile variiert, ist Objectdieser Wert . Diese Spalte kann keinen NULL-Wert enthalten.
IsLong true , wenn der Datentyp der Spalte ist String und ihre MaxLength Eigenschaft -1 ist. Andernfalls false.
AllowDBNull true , wenn die AllowDbNull-Einschränkung für die Spalte auf true festgelegt ist; falseandernfalls .
IsReadOnly true , wenn die Spalte nicht geändert werden kann; andernfalls false.
IsRowVersion false, für jede Spalte.
IsUnique true: Keine zwei Zeilen in der DataTable können denselben Wert in dieser Spalte aufweisen. IsUnique ist garantiert true, wenn die Spalte selbst einen Schlüssel darstellt oder wenn eine Einschränkung des Typs UNIQUE vorhanden ist, die nur für diese Spalte gilt. false: Die Spalte kann doppelte Werte im DataTableenthalten. Der Standardwert für diese Spalte ist false.
IsKey true: Die Spalte ist eine aus einer Reihe von Spalten, die die Zeile in der DataTableeindeutig identifizieren. Der Satz von Spalten mit IsKey festgelegt auf true muss eine Zeile in DataTableeindeutig identifizieren. Es ist nicht erforderlich, dass es sich bei dieser Menge Spalten um eine minimale Spaltenmenge handelt. Dieser Satz von Spalten kann aus einem DataTable Primärschlüssel, einer eindeutigen Einschränkung oder einem eindeutigen Index generiert werden. false: Die Spalte ist nicht erforderlich, um die Zeile eindeutig zu identifizieren. Dieser Wert ist, wenn die Spalte an einem einzelnen oder zusammengesetzten Primärschlüssel beteiligt ist true . Andernfalls ist falseder Wert .
IsAutoIncrement true: Die Spalte weist neuen Zeilen in festen Schritten Werte zu. false: Die Spalte weist neuen Zeilen in festen Schritten keine Werte zu. Der Standardwert für diese Spalte ist false.
BaseCatalogName Der Name des Katalogs im Datenspeicher, der die Spalte enthält. Null , wenn der Name des Basiskatalogs nicht bestimmt werden kann. Der Standardwert für diese Spalte ist ein null Wert.
BaseSchemaName Dieser Wert ist immer Null.
BaseTableName Der Name von DataTable.
BaseColumnName Der Name der Spalte im DataTable.
AutoIncrementSeed Der Wert der DataTableEigenschaft "s AutoIncrementSeed ".
AutoIncrementStep Der Wert der DataTableEigenschaft "s AutoIncrementStep ".
DefaultValue Der Wert der DataColumnEigenschaft "s DefaultValue ".
Ausdruck Die Ausdruckszeichenfolge, wenn es sich bei der aktuellen Spalte um eine Ausdrucksspalte handelt und alle im Ausdruck verwendeten Spalten zu derselben gehören, die T:System.Data.DataTable die Ausdrucksspalte enthält, andernfalls null.
ColumnMapping Der MappingType wert, der dem zugeordnet ist DataColumn. Der Typ kann einer von Attribute, Element, Hiddenoder SimpleContentsein. Der Standardwert ist Element.
BaseTableNamespace Der Wert der DataTableEigenschaft "s Namespace ".
BaseColumnNamespace Der Wert der DataColumnEigenschaft "s Namespace ".

Gilt für: