Sdílet prostřednictvím


DataTableReader.GetSchemaTable Metoda

Definice

Vrátí hodnotu DataTable , která popisuje metadata DataTableReadersloupce .

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

Návraty

A DataTable , který popisuje metadata sloupce.

Výjimky

Příklady

Následující příklad konzolové aplikace načte informace o schématu o zadaném sloupci. DisplaySchemaTableInfo Předejte proceduru DataTableReader a celé číslo představující pořadové umístění sloupce v rámci DataTableReadera procedura vypíše informace o schématu do okna konzoly.

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

Poznámky

Metoda GetSchemaTable vrací metadata o každém sloupci v následujícím pořadí:

Sloupec DataReader Description
ColumnName Název sloupce, který se zobrazí v souboru DataTable.
Sloupcový pořadový Pořadový řádek sloupce
Velikost sloupce -1, pokud ColumnSize nelze určit (nebo MaxLength) vlastnost DataColumn , která není relevantní; jinak 0 nebo kladné celé číslo, které obsahuje MaxLength hodnotu.
NumericPrecision Pokud je typ sloupce číselný typ, jedná se o maximální přesnost sloupce. Pokud typ sloupce není číselný datový typ, jedná se o hodnotu null.
NumericScale Pokud datový typ sloupce obsahuje komponentu škálování, vrátí počet číslic napravo od desetinné čárky. V opačném případě vrátí hodnotu null.
datový typ Základní typ sloupce.
ProviderType Indikátor datového typu sloupce. Pokud se datový typ sloupce liší od řádku po řádek, je Objecttato hodnota . Tento sloupec nemůže obsahovat hodnotu null.
IsLong true pokud je datový typ sloupce String a jeho MaxLength vlastnost je -1. V opačném případě false.
Allowdbnull truePokud je pro sloupec nastaveno omezení AllowDbNull na hodnotu true; v opačném případě . false
Je pouze pro čtení true pokud sloupec nelze změnit; jinak false.
IsRowVersion falsepro každý sloupec.
IsUnique true: Žádné dva řádky v DataTable tomto sloupci mohou mít stejnou hodnotu. IsUnique je zaručeno, že platí, pokud sloupec představuje klíč sám nebo pokud existuje omezení typu UNIQUE, které platí pouze pro tento sloupec. false: Sloupec může obsahovat duplicitní hodnoty v objektu DataTable. Výchozí hodnota tohoto sloupce je false.
Iskey true: Sloupec je jednou ze sady sloupců, které dohromady jednoznačně identifikují řádek v sadě DataTable. Sada sloupců, IsKey které mají true nastavenou hodnotu, musí jednoznačně identifikovat řádek v sadě DataTable. Není nutné, aby tato sada sloupců byla minimální sadou sloupců. Tato sada sloupců se může generovat z primárního DataTable klíče, jedinečného omezení nebo jedinečného indexu. false: Sloupec není nutný k jednoznačné identifikaci řádku. Tato hodnota je true , pokud se sloupec účastní jednoho nebo složeného primárního klíče. V opačném případě je jeho hodnota false.
IsAutoIncrement true: Sloupec přiřazuje hodnoty novým řádkům v pevných přírůstcích. false: Sloupec nepřiřazuje hodnoty novým řádkům v pevných přírůstcích. Výchozí hodnota tohoto sloupce je false.
BaseCatalogName Název katalogu v úložišti dat, který obsahuje sloupec. Null pokud nelze určit název základního katalogu. Výchozí hodnota pro tento sloupec je null hodnota.
BaseSchemaName Tato hodnota je vždy Null.
BaseTableName Název DataTable.
BaseColumnName Název sloupce v sadě DataTable.
Automatické zvýšeníSeed Hodnota DataTablevlastnosti '.AutoIncrementSeed
AutoIncrementStep Hodnota DataTablevlastnosti '.AutoIncrementStep
Výchozí hodnota Hodnota DataColumnvlastnosti '.DefaultValue
Expression Řetězec výrazu, pokud je aktuálním sloupcem sloupec výrazu a všechny sloupce použité ve výrazu patří do stejného T:System.Data.DataTable , který obsahuje sloupec výrazu; jinak null.
ColumnMapping Hodnota MappingType přidružená k hodnotě DataColumn. Typ může být jeden z Attribute, Element, Hiddennebo SimpleContent. Výchozí hodnota je Element.
BaseTableNamespace Hodnota DataTablevlastnosti '.Namespace
BaseColumnNamespace Hodnota DataColumnvlastnosti '.Namespace

Platí pro