Sdílet prostřednictvím


DataTableReader.GetSchemaTable Metoda

Definice

Vrátí hodnotu DataTable , která popisuje metadata sloupce objektu 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

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. Předejte proceduru DisplaySchemaTableInfoDataTableReader a a celé číslo představující ordinální pozici 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 tak, jak se zobrazuje v DataTable.
ColumnOrdinal Ordinál sloupce
Columnsize -1, pokud ColumnSize vlastnost (nebo MaxLength) objektu DataColumn nelze určit nebo není relevantní; v opačném případě hodnota 0 nebo kladné celé číslo, které obsahuje MaxLength hodnotu.
NumericPrecision Pokud je typ sloupce číselný, jedná se o maximální přesnost sloupce. Pokud typ sloupce není číselným datovým typem, jedná se o hodnotu null.
NumericScale Pokud má datový typ sloupce součást měřítka, vrátí počet číslic napravo od desetinné čárky. V opačném případě vrátí hodnotu null.
DataType Základní typ sloupce.
Providertype Indikátor datového typu sloupce. Pokud se datový typ sloupce liší v jednotlivých řádcích, je Objecttato hodnota . Tento sloupec nesmí obsahovat hodnotu null.
IsLong true pokud je String datový typ sloupce a jeho MaxLength vlastnost je -1. V opačném případě hodnota false.
Allowdbnull truePokud allowDbNull omezení je nastavena na true pro sloupec; v opačném případě . false
IsReadOnly true pokud sloupec nelze upravit; jinak false.
IsRowVersion falsepro každý sloupec.
Isunique true: Žádné dva řádky v tomto DataTable sloupci nesmí mít stejnou hodnotu. IsUnique je zaručeno, že bude pravdivá, pokud sloupec představuje klíč sám o sobě nebo pokud existuje omezení typu UNIQUE, které se vztahuje pouze na tento sloupec. false: Sloupec může obsahovat duplicitní hodnoty v objektu DataTable. Výchozí hodnota tohoto sloupce je false.
Iskey true: Sloupec je jedním ze sady sloupců, které dohromady jednoznačně identifikují řádek v DataTable. Sada sloupců s nastavenou IsKey na true musí jednoznačně identifikovat řádek v DataTable. Není nutné, aby tato sada sloupců byla minimální sadou sloupců. Tato sada sloupců může být generována 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 falsejeho hodnota .
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 tohoto sloupce je null hodnota.
BaseSchemaName Tato hodnota je vždy Null.
BaseTableName Název procesu DataTable.
BaseColumnName Název sloupce v DataTable.
AutoIncrementSeed Hodnota DataTablevlastnosti '.AutoIncrementSeed
AutoIncrementStep Hodnota DataTablevlastnosti '.AutoIncrementStep
Defaultvalue Hodnota DataColumnvlastnosti '.DefaultValue
Výraz Řetězec výrazu, pokud je aktuální sloupec sloupcem výrazu a všechny sloupce použité ve výrazu patří do stejného T:System.Data.DataTable sloupce, který obsahuje sloupec výrazu; jinak null.
ColumnMapping Hodnota přidružená MappingType k DataColumn. Typ může být , AttributeElement, Hiddennebo SimpleContent. Výchozí hodnota je Element.
BaseTableNamespace Hodnota DataTablevlastnosti '.Namespace
BaseColumnNamespace Hodnota DataColumnvlastnosti '.Namespace

Platí pro