DataTableReader.GetSchemaTable Methode

Definitie

Retourneert een DataTable die de kolommetagegevens van de 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

Retouren

Een DataTable die de metagegevens van de kolom beschrijft.

Uitzonderingen

Voorbeelden

In het volgende consoletoepassingsvoorbeeld worden schemagegevens over de opgegeven kolom opgehaald. Geef de DisplaySchemaTableInfo procedure een DataTableReader en een geheel getal door dat de rangtelpositie van een kolom binnen de DataTableReaderkolom vertegenwoordigt en de procedure voert schemagegevens uit naar het consolevenster.

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

Opmerkingen

De methode GetSchemaTable retourneert metagegevens over elke kolom in de volgende volgorde:

DataReader-kolom Description
ColumnName De naam van de kolom zoals deze wordt weergegeven in de DataTablekolom .
ColumnOrdinal Het rangnummer van de kolom
Kolomgrootte -1 als de ColumnSize (of MaxLength) eigenschap van de eigenschap DataColumn niet kan worden bepaald of niet relevant is; anders 0 of een positief geheel getal dat de MaxLength waarde bevat.
Numeriekeprecisie Als het kolomtype een numeriek type is, is dit de maximale precisie van de kolom. Als het kolomtype geen numeriek gegevenstype is, is dit een null-waarde.
Numericscale Als het gegevenstype van de kolom een schaalonderdeel heeft, geeft u het aantal cijfers rechts van het decimaalteken als resultaat. Anders retourneert u een null-waarde.
Gegevenstype Het onderliggende type van de kolom.
ProviderType De indicator van het gegevenstype van de kolom. Als het gegevenstype van de kolom verschilt van rij tot rij, is Objectdit de waarde. Deze kolom mag geen null-waarde bevatten.
IsLong true als het gegevenstype van de kolom is String en MaxLength de eigenschap -1 is. Anders false.
AllowDBNull true als de allowDbNull-beperking is ingesteld op true voor de kolom; anders, false.
IsReadOnly true als de kolom niet kan worden gewijzigd; anders false.
IsRowVersion false, voor elke kolom.
IsUnique true: Er kunnen geen twee rijen in de DataTable kolom dezelfde waarde hebben. IsUnique is gegarandeerd waar als de kolom een sleutel zelf vertegenwoordigt of als er een beperking van het type UNIQUE is die alleen van toepassing is op deze kolom. false: De kolom kan dubbele waarden in de DataTablekolom bevatten. De standaardwaarde van deze kolom is false.
IsKey true: De kolom is een van een set kolommen die samen de rij in de DataTablerij uniek identificeren. De set kolommen die IsKey zijn ingesteld op true een unieke identificatie van een rij in de DataTable. Er is geen vereiste dat deze set kolommen een minimale set kolommen is. Deze set kolommen kan worden gegenereerd op basis van een DataTable primaire sleutel, een unieke beperking of een unieke index. false: De kolom is niet vereist om de rij uniek te identificeren. Deze waarde is true als de kolom deelneemt aan één of samengestelde primaire sleutel. Anders is de waarde false.
IsAutoIncrement true: De kolom wijst waarden toe aan nieuwe rijen in vaste stappen. false: De kolom wijst geen waarden toe aan nieuwe rijen in vaste stappen. De standaardwaarde van deze kolom is false.
BaseCatalogName De naam van de catalogus in het gegevensarchief dat de kolom bevat. Null als de naam van de basiscatalogus niet kan worden bepaald. De standaardwaarde voor deze kolom is een null waarde.
BaseSchemaName Deze waarde is altijd Null.
BaseTableName De naam van de DataTable.
BaseColumnName De naam van de kolom in de DataTable.
AutoIncrementSeed De waarde van de DataTableAutoIncrementSeed eigenschap.
AutoIncrementStep De waarde van de DataTableAutoIncrementStep eigenschap.
Standaardwaarde De waarde van de DataColumnDefaultValue eigenschap.
Expression De expressietekenreeks, als de huidige kolom een expressiekolom is en alle kolommen die in de expressie worden gebruikt, behoren tot hetzelfde T:System.Data.DataTable dat de expressiekolom bevat, anders null.
Kolommapping De MappingType waarde die is gekoppeld aan de DataColumn. Het type kan een van Attribute, Elementof Hidden.SimpleContent De standaardwaarde is Element.
BaseTableNamespace De waarde van de DataTableNamespace eigenschap.
BaseColumnNamespace De waarde van de DataColumnNamespace eigenschap.

Van toepassing op