DataTableReader.GetSchemaTable Metoda

Definicja

Zwraca element DataTable opisujący metadane kolumny elementu 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ę DisplaySchemaTableInfoDataTableReader i liczbę całkowitą reprezentującą położenie porządkowe kolumny w obiekcie DataTableReader, a procedura generuje informacje o schemacie w oknie 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
nazwa_kolumny Nazwa kolumny wyświetlana w elemecie DataTable.
KolumnaOrdinal Porządkowość kolumny
Columnsize -1, jeśli ColumnSize właściwość (lub MaxLength) nie może być określona lub nie jest odpowiednia; w przeciwnym razie 0 lub dodatnia liczba całkowita zawierająca MaxLengthDataColumn 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 po prawej stronie 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 , a jej MaxLength właściwość to -1. W przeciwnym razie wartość false.
Allowdbnull true jeśli ograniczenie AllowDbNull jest ustawione na 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, które mogą mieć tę samą wartość. 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 razem identyfikują wiersz w elemecie DataTable. Zestaw kolumn z ustawioną IsKey wartością true musi jednoznacznie zidentyfikować wiersz w elemecie 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 zidentyfikowania wiersza. Ta wartość jest taka true , 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 dla tej kolumny to null wartość.
BaseSchemaName Ta wartość jest zawsze Null.
Nazwa tabeli bazowej Nazwa elementu DataTable.
BaseColumnName Nazwa kolumny w elemecie DataTable.
Autoincrementseed Wartość DataTablewłaściwości "s AutoIncrementSeed ".
AutoInkrementAcjakrok Wartość DataTablewłaściwości "s AutoIncrementStep ".
Defaultvalue 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.
ColumnMapping Wartość MappingType skojarzona z elementem DataColumn. Typ może być jednym z Attribute, , ElementHiddenlub SimpleContent. Wartość domyślna to Element.
BaseTableNamespace Wartość DataTablewłaściwości "s Namespace ".
BaseColumnNamespace Wartość DataColumnwłaściwości "s Namespace ".

Dotyczy