Freigeben über


DataTableReader.GetSchemaTable Methode

Definition

Gibt einen DataTable Wert zurück, der die Spaltenmetadaten der 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.

Ausnahmen

Beispiele

Im folgenden Beispiel für die Konsolenanwendung werden Schemainformationen zu der angegebenen Spalte abgerufen. Übergeben Sie die DisplaySchemaTableInfo Prozedur a DataTableReader und eine ganze Zahl, die die Ordnungsposition einer Spalte innerhalb der DataTableReaderProzedur darstellt, 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 sie in der DataTable.
ColumnOrdinal Die Ordnungszahl der Spalte
Spaltengröße -1, wenn die ColumnSize (oder MaxLength) Eigenschaft des Objekts 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, handelt es sich um einen Nullwert.
NumericScale Wenn der Spaltendatentyp eine Skalierungskomponente aufweist, geben Sie die Anzahl der Ziffern rechts neben dem Dezimalkomma zurück. Andernfalls wird ein Nullwert zurückgegeben.
Datentyp Der zugrunde liegende Typ der Spalte.
ProviderType Der Indikator des Datentyps der Spalte. Wenn der Datentyp der Spalte von Zeile zu Zeile variiert, lautet Objectdieser Wert . Diese Spalte darf keinen NULL-Wert enthalten.
IsLong truewenn der Datentyp der Spalte und seine MaxLength Eigenschaft -1 istString. Andernfalls, false.
Allowdbnull truewenn die AllowDbNull-Einschränkung für die Spalte auf "true" festgelegt ist; andernfalls . false
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 Spalte können denselben Wert in dieser Spalte haben. IsUnique ist garantiert wahr, wenn die Spalte einen Schlüssel selbst darstellt oder wenn eine Einschränkung vom Typ UNIQUE vorhanden ist, die nur für diese Spalte gilt. false: Die Spalte kann doppelte Werte in der DataTable. Der Standardwert dieser Spalte ist false.
Iskey true: Die Spalte ist eine von einer Reihe von Spalten, die zusammengenommen und die Zeile in der .DataTable Der Satz von Spalten, für IsKey die festgelegt ist, true muss eine Zeile in der DataTable. Es ist nicht erforderlich, dass dieser Satz von Spalten ein minimaler Satz von Spalten ist. 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 true , wenn die Spalte an einem einzelnen oder zusammengesetzten Primärschlüssel teilnimmt. Andernfalls ist der Wert false.
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 dieser Spalte ist false.
BaseCatalogName Der Name des Katalogs im Datenspeicher, der die Spalte enthält. Null wenn der Basiskatalogname nicht bestimmt werden kann. Der Standardwert für diese Spalte ist ein null Wert.
BaseSchemaName Dieser Wert ist immer Null.
BaseTableName Der Name des DataTable.
BaseColumnName Der Name der Spalte in der DataTable.
AutoIncrementSeed Der Wert der DataTableEigenschaft 's AutoIncrementSeed .
AutoIncrementStep Der Wert der DataTableEigenschaft 's AutoIncrementStep .
Standardwert Der Wert der DataColumnEigenschaft 's DefaultValue .
Ausdruck Die Ausdruckszeichenfolge, wenn es sich bei der aktuellen Spalte um eine Ausdrucksspalte handelt, und alle spalten, die im Ausdruck verwendet werden, gehören zum gleichen T:System.Data.DataTable , der die Ausdrucksspalte enthält; andernfalls null.
ColumnMapping Der MappingType wert, der der DataColumn. Der Typ kann eine von Attribute, , Element, Hiddenoder SimpleContent. Der Standardwert ist Element.
BaseTableNamespace Der Wert der DataTableEigenschaft 's Namespace .
BaseColumnNamespace Der Wert der DataColumnEigenschaft 's Namespace .

Gilt für: