Udostępnij za pośrednictwem


DataTableReader.GetSchemaTable Metoda

Definicja

Zwraca element opisujący DataTable metadane kolumny obiektu 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

Zwraca

Element DataTable opisujący metadane kolumny.

Wyjątki

Element DataTableReader jest zamknięty.

Przykłady

Poniższy przykład aplikacji konsolowej pobiera informacje o schemacie o określonej kolumnie. Przekaż procedurę DisplaySchemaTableInfo i DataTableReader liczbę całkowitą reprezentującą położenie porządkowe kolumny w obiekcie DataTableReader, a procedura zwraca informacje o schemacie do okna konsoli.

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

Uwagi

Metoda GetSchemaTable zwraca metadane dotyczące każdej kolumny w następującej kolejności:

Kolumna DataReader Opis
ColumnName Nazwa kolumny wyświetlana w pliku DataTable.
KolumnaOrdinal Porządkowe kolumny
Rozmiar kolumny -1, jeśli ColumnSize nie można określić lub nie ma znaczenia właściwości DataColumn (lub MaxLength) ; w przeciwnym razie 0 lub dodatnia liczba całkowita zawierająca MaxLength wartość.
NumericPrecision Jeśli typ kolumny jest typem liczbowym, jest to maksymalna precyzja kolumny. Jeśli typ kolumny nie jest typem danych liczbowych, jest to wartość null.
Numericscale Jeśli typ danych kolumny ma składnik skalowania, zwróć liczbę cyfr z prawej strony punktu dziesiętnego. W przeciwnym razie zwróć wartość null.
Typ danych Podstawowy typ kolumny.
Typ dostawcy Wskaźnik typu danych kolumny. Jeśli typ danych kolumny różni się od wiersza do wiersza, ta wartość to Object. Ta kolumna nie może zawierać wartości null.
IsLong true jeśli typ danych kolumny to String i jego MaxLength właściwość to -1. W przeciwnym razie false.
Allowdbnull true jeśli ograniczenie AllowDbNull ma wartość true dla kolumny; w przeciwnym razie, false.
IsReadOnly true jeśli nie można zmodyfikować kolumny; w przeciwnym razie false.
IsRowVersion false, dla każdej kolumny.
IsUnique true: w tej kolumnie DataTable nie ma dwóch wierszy w tej kolumnie. IsUnique Jest gwarantowana wartość true, jeśli kolumna reprezentuje klucz sam w sobie lub jeśli istnieje ograniczenie typu UNIQUE, które ma zastosowanie tylko do tej kolumny. false: Kolumna może zawierać zduplikowane wartości w obiekcie DataTable. Wartość domyślna tej kolumny to false.
Iskey true: Kolumna jest jednym z zestawów kolumn, które wspólnie identyfikują wiersz w obiekcie DataTable. Zestaw kolumn z IsKey ustawioną wartością true musi unikatowo identyfikować wiersz w obiekcie DataTable. Nie ma potrzeby, aby ten zestaw kolumn był minimalnym zestawem kolumn. Ten zestaw kolumn może być generowany na podstawie klucza podstawowego DataTable , unikatowego ograniczenia lub unikatowego indeksu. false: Kolumna nie jest wymagana do unikatowego identyfikowania wiersza. Ta wartość jest true taka, jeśli kolumna uczestniczy w pojedynczym lub złożonym kluczu podstawowym. W przeciwnym razie jego wartość to false.
IsAutoIncrement true: Kolumna przypisuje wartości do nowych wierszy w stałych przyrostach. false: Kolumna nie przypisuje wartości do nowych wierszy w stałych przyrostach. Wartość domyślna tej kolumny to false.
BaseCatalogName Nazwa wykazu w magazynie danych, który zawiera kolumnę. Null jeśli nie można określić nazwy katalogu podstawowego. Wartość domyślna null dla tej kolumny to wartość.
BaseSchemaName Ta wartość jest zawsze Null.
Nazwa tabeli bazowej Nazwa elementu DataTable.
Nazwa kolumny bazowej Nazwa kolumny w pliku DataTable.
Autoincrementseed Wartość DataTablewłaściwości .s AutoIncrementSeed .
AutoInkrementKrok Wartość DataTablewłaściwości .s AutoIncrementStep .
Wartość domyślna Wartość DataColumnwłaściwości .s DefaultValue .
Wyrażenie Ciąg wyrażenia, jeśli bieżąca kolumna jest kolumną wyrażenia, a wszystkie kolumny używane w wyrażeniu należą do tego samego T:System.Data.DataTable , który zawiera kolumnę wyrażenia; w przeciwnym razie null.
Mapowanie kolumn Wartość MappingType skojarzona z elementem DataColumn. Typ może być jednym z Attribute, Element, Hiddenlub SimpleContent. Domyślna wartość to Element.
BaseTableNamespace Wartość DataTablewłaściwości .s Namespace .
BaseColumnNamespace Wartość DataColumnwłaściwości .s Namespace .

Dotyczy