DataTableReader.GetSchemaTable Metod

Definition

Returnerar en DataTable som beskriver kolumnmetadata för 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

Returer

En DataTable som beskriver kolumnmetadata.

Undantag

Exempel

I följande konsolprogramexempel hämtas schemainformation om den angivna kolumnen. Skicka proceduren DisplaySchemaTableInfo a DataTableReader och ett heltal som representerar ordningstalet för en kolumn i DataTableReader, och proceduren matar ut schemainformation till konsolfönstret.

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

Kommentarer

Metoden GetSchemaTable returnerar metadata om varje kolumn i följande ordning:

DataReader-kolumn Beskrivning
ColumnName Namnet på kolumnen som den visas i DataTable.
ColumnOrdinal Kolumnens ordningstal
Kolumnstorlek -1 om ColumnSize egenskapen (eller MaxLength) inte kan fastställas eller inte är relevant, annars 0 eller ett positivt heltal som innehåller MaxLengthDataColumn värdet.
Numerisktprecision Om kolumntypen är en numerisk typ är detta kolumnens maximala precision. Om kolumntypen inte är en numerisk datatyp är detta ett null-värde.
Numerisk skala Om kolumndatatypen har en skalningskomponent returnerar du antalet siffror till höger om decimaltecknet. Annars returnerar du ett null-värde.
Datatyp Den underliggande typen av kolumn.
ProviderType Indikatorn för kolumnens datatyp. Om datatypen för kolumnen varierar från rad till rad är Objectdet här värdet . Den här kolumnen får inte innehålla ett null-värde.
IsLong true om datatypen för kolumnen är String och dess MaxLength egenskap är -1. Annars, false.
AllowDBNull trueom villkoret AllowDbNull är inställt på true för kolumnen; annars . false
ÄrEndastLäsbar true om kolumnen inte kan ändras. annars false.
IsRowVersion false, för varje kolumn.
IsUnique true: Inga två rader i DataTable kan ha samma värde i den här kolumnen. IsUnique är garanterat sant om kolumnen representerar en nyckel själv eller om det finns en begränsning av typen UNIK som endast gäller för den här kolumnen. false: Kolumnen kan innehålla duplicerade värden i DataTable. Standardvärdet för den här kolumnen är false.
IsKey true: Kolumnen är en av en uppsättning kolumner som tillsammans unikt identifierar raden i DataTable. Den uppsättning kolumner som IsKey har angetts till true måste unikt identifiera en rad i DataTable. Det finns inget krav på att den här uppsättningen kolumner är en minimal uppsättning kolumner. Den här uppsättningen kolumner kan genereras från en DataTable primärnyckel, en unik begränsning eller ett unikt index. false: Kolumnen krävs inte för att unikt identifiera raden. Det här värdet är true om kolumnen deltar i en enskild eller sammansatt primärnyckel. Annars är dess värde false.
IsAutoIncrement true: Kolumnen tilldelar värden till nya rader i fasta steg. false: Kolumnen tilldelar inte värden till nya rader i fasta steg. Standardvärdet för den här kolumnen är false.
BaseCatalogName Namnet på katalogen i datalagret som innehåller kolumnen. Null om baskatalognamnet inte kan fastställas. Standardvärdet för den här kolumnen är ett null värde.
BaseSchemaName Det här värdet är alltid Null.
BaseTableName Namnet på DataTable.
BaseColumnName Namnet på kolumnen i DataTable.
AutoIncrementSeed Värdet för DataTableegenskapen 's AutoIncrementSeed .
AutoIncrementStep Värdet för DataTableegenskapen 's AutoIncrementStep .
Standardvärde Värdet för DataColumnegenskapen 's DefaultValue .
Expression Uttryckssträngen, om den aktuella kolumnen är en uttryckskolumn och alla kolumner som används i uttrycket tillhör samma T:System.Data.DataTable som innehåller uttryckskolumnen, annars null.
ColumnMapping Värdet MappingType som är associerat med DataColumn. Typen kan vara en av Attribute, Element, Hiddeneller SimpleContent. Standardvärdet är Element.
BaseTableNamespace Värdet för DataTableegenskapen 's Namespace .
BaseColumnNamespace Värdet för DataColumnegenskapen 's Namespace .

Gäller för