DataTableReader.GetSchemaTable Metodo

Definizione

Restituisce un oggetto DataTable che descrive i metadati della colonna di 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

Restituisce

Oggetto DataTable che descrive i metadati della colonna.

Eccezioni

Esempio

Nell'esempio di applicazione console seguente vengono recuperate informazioni sullo schema sulla colonna specificata. Passare la routine a DataTableReader e un intero che rappresenta la DisplaySchemaTableInfo posizione ordinale di una colonna all'interno DataTableReaderdi e le informazioni sullo schema vengono restituite alla finestra della console.

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

Commenti

Il metodo GetSchemaTable restituisce metadati relativi a ogni colonna nell'ordine seguente:

Colonna DataReader Descrizione
ColumnName Nome della colonna visualizzata nell'oggetto DataTable.
ColumnOrdinal Ordinale della colonna
ColumnSize -1 se la proprietà (o MaxLength) dell'oggetto DataColumnColumnSize non può essere determinata o non è rilevante; in caso contrario, 0 o un intero positivo contenente il MaxLength valore.
NumericPrecision Se il tipo di colonna è un tipo numerico, si tratta della precisione massima della colonna. Se il tipo di colonna non è un tipo di dati numerico, si tratta di un valore Null.
NumericScale Se il tipo di dati della colonna ha un componente di scala, restituire il numero di cifre a destra del punto decimale. In caso contrario, restituire un valore Null.
DataType Tipo sottostante della colonna.
ProviderType Indicatore del tipo di dati della colonna. Se il tipo di dati della colonna varia da riga a riga, questo valore è Object. Questa colonna non può contenere un valore Null.
IsLong truese il tipo di dati della colonna è e la relativa MaxLength proprietà è String -1. In caso contrario, false.
AllowDBNull true se il vincolo AllowDbNull è impostato su true per la colonna; in caso contrario, false.
IsReadOnly true se la colonna non può essere modificata; altrimenti false.
IsRowVersion false, per ogni colonna.
IsUnique true: nessuna due righe nell'oggetto DataTable può avere lo stesso valore in questa colonna. IsUnique è garantito che sia true se la colonna rappresenta una chiave da sola o se esiste un vincolo di tipo UNIQUE che si applica solo a questa colonna. false: la colonna può contenere valori duplicati nell'oggetto DataTable. Il valore predefinito di questa colonna è false.
IsKey true: la colonna è una di un set di colonne che, unite, identificano in modo univoco la riga in DataTable. Il set di colonne con IsKey impostato su true deve identificare in modo univoco una riga in DataTable. Non è necessario che questo set di colonne sia un set minimo di colonne. Questo set di colonne può essere generato da una chiave primaria, da un DataTable vincolo univoco o da un indice univoco. false: la colonna non è necessaria per identificare in modo univoco la riga. Questo valore è true se la colonna partecipa a una singola chiave primaria o composita. In caso contrario, il relativo valore è false.
IsAutoIncrement true: la colonna assegna valori a nuove righe in incrementi fissi. false: la colonna non assegna valori alle nuove righe in incrementi fissi. Il valore predefinito di questa colonna è false.
BaseCatalogName Nome del catalogo nell'archivio dati contenente la colonna. Null se non è possibile determinare il nome del catalogo di base. Il valore predefinito per questa colonna è un null valore.
BaseSchemaName Questo valore è sempre Null.
BaseTableName Nome di DataTable.
BaseColumnName Nome della colonna in DataTable.
AutoIncrementSeed Valore della DataTableproprietà 's AutoIncrementSeed .
AutoIncrementStep Valore della DataTableproprietà 's AutoIncrementStep .
DefaultValue Valore della DataColumnproprietà 's DefaultValue .
Expression Stringa di espressione, se la colonna corrente è una colonna di espressione e tutte le colonne usate nell'espressione appartengono alla stessa T:System.Data.DataTable che contiene la colonna di espressione; in caso contrario null.
ColumnMapping Valore MappingType associato a DataColumn. Il tipo può essere uno di Attribute, , HiddenElemento SimpleContent. Il valore predefinito è Element.
BaseTableNamespace Valore della DataTableproprietà 's Namespace .
BaseColumnNamespace Valore della DataColumnproprietà 's Namespace .

Si applica a