Condividi tramite


DataTableReader.GetSchemaTable Metodo

Definizione

Restituisce un oggetto DataTable che descrive i metadati della colonna dell'oggetto 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 relative alla colonna specificata. Passare la DisplaySchemaTableInfo routine a DataTableReader e un numero intero che rappresenta la posizione ordinale di una colonna all'interno DataTableReaderdi e la routine restituisce informazioni sullo schema 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 i metadati relativi a ogni colonna nell'ordine seguente:

Colonna DataReader Descrizione
ColumnName Nome della colonna visualizzata nell'oggetto DataTable.
ColumnOrdinal Ordinale della colonna
DimensioneColonna -1 se la ColumnSize proprietà (o MaxLength) di DataColumn non può essere determinata o non è rilevante; in caso contrario, 0 o un numero intero positivo che contiene 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 separatore decimale. In caso contrario, restituire un valore Null.
Tipo di dati 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 true se il tipo di dati della colonna è String e la relativa MaxLength proprietà è -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; in caso contrario false, .
IsRowVersion false, per ogni colonna.
IsUnique true: due righe in DataTable possono avere lo stesso valore in questa colonna. IsUnique è garantito che sia true se la colonna rappresenta una chiave da sola o se è presente un vincolo di tipo UNIQUE che si applica solo a questa colonna. false: la colonna può contenere valori duplicati in DataTable. Il valore predefinito di questa colonna è false.
Iskey true: la colonna è una di un set di colonne che, insieme, identificano in modo univoco la riga in DataTable. Il set di colonne con IsKey impostato su true deve identificare in modo univoco una riga nell'oggetto DataTable. Non è necessario che questo set di colonne sia un set minimo di colonne. Questo set di colonne può essere generato da una DataTable chiave primaria, da un 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 fa parte di una singola chiave primaria o composita. In caso contrario, il relativo valore è false.
IsAutoIncrement true: la colonna assegna valori alle 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 che contiene 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 del DataTable.
BaseColumnName Nome della colonna nell'oggetto DataTable.
AutoIncrementSeed Valore della proprietà dell'oggetto DataTableAutoIncrementSeed .
AutoIncrementStep Valore della proprietà dell'oggetto DataTableAutoIncrementStep .
Valore predefinito Valore della proprietà dell'oggetto DataColumnDefaultValue .
Expression Stringa dell'espressione, se la colonna corrente è una colonna di espressione e tutte le colonne utilizzate nell'espressione appartengono alla stessa T:System.Data.DataTable che contiene la colonna dell'espressione; in caso contrario null, .
ColumnMapping Valore MappingType associato all'oggetto DataColumn. Il tipo può essere uno di Attribute, ElementHidden, o SimpleContent. Il valore predefinito è Element.
BaseTableNamespace Valore della proprietà dell'oggetto DataTableNamespace .
BaseColumnNamespace Valore della proprietà dell'oggetto DataColumnNamespace .

Si applica a