Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo DbDataAdapter.FillSchema (DataTable, SchemaType)

 

Data di pubblicazione: ottobre 2016

Configura lo schema dell'oggetto DataTable specificato basato sull'oggetto SchemaType specificato.

Spazio dei nomi:   System.Data.Common
Assembly:  System.Data (in System.Data.dll)

public DataTable FillSchema(
	DataTable dataTable,
	SchemaType schemaType
)

Parametri

dataTable
Type: System.Data.DataTable

Oggetto DataTable in cui inserire lo schema dall'origine dati.

schemaType
Type: System.Data.SchemaType

Uno dei valori di SchemaType.

Valore restituito

Type: System.Data.DataTable

Oggetto DataTable che contiene le informazioni sullo schema restituite dall'origine dati.

Il FillSchema metodo recupera lo schema dall'origine dati utilizzando il SelectCommand. L'oggetto connessione associato il SelectCommand deve essere valido, ma non deve essere aperta. Se la connessione viene chiusa prima FillSchema viene chiamato, verrà aperta per recuperare i dati, quindi chiusa. Se la connessione è aperta prima di FillSchema viene chiamato, rimane aperto.

Oggetto FillSchema operazione restituisce un DataTable. Aggiunge quindi le colonne per la DataColumnCollection del DataTable, e configura gli elementi seguenti DataColumn proprietà se esistono nell'origine dati:

FillSchema Configura inoltre la PrimaryKey e Constraints proprietà in base alle regole seguenti:

  • Se un PrimaryKey è già stato definito per il DataTable, o DataTable contiene dati, il PrimaryKey verrà non impostata.

  • Se uno o più colonne chiave primaria vengono restituite dal SelectCommand, utilizzate come colonne chiave primaria per il DataTable.

  • Se viene restituita alcuna colonna di chiave primaria, ma sono colonne univoche, le colonne univoche vengono utilizzate come chiave primaria se e solo se tutte le colonne univoche sono ammessi valori null. Se una delle colonne sono nullable, un UniqueConstraint viene aggiunto per il ConstraintCollection, ma il PrimaryKey non è impostata.

  • Se vengono restituite sia colonne chiave primaria che colonne univoche, le colonne chiave primaria vengono utilizzate come colonne chiave primaria per il DataTable.

Si noti che le chiavi primarie e i vincoli unique vengono aggiunto il ConstraintCollection in base alle regole precedenti, ma altri vincoli non vengono aggiunti i tipi. Questo processo può richiedere più round trip al server.

Se il cluster univoco indice è definito in una o più colonne in una tabella di SQL Server e il vincolo di chiave primaria è definito in un set separato di colonne, verranno restituito i nomi delle colonne nell'indice cluster. Per restituire il nome o i nomi delle colonne chiave primaria, utilizzare un hint per la query con l'istruzione SELECT che specifica il nome dell'indice di chiave primaria. Per ulteriori informazioni sulla specifica di hint per la query, vedere Query Hint (Transact-SQL).

Se il DbDataAdapter rileva colonne duplicate durante la compilazione di un DataTable, genera nomi per le colonne successive utilizzando il modello "columnname1", "columnname2","columnname3" e così via. Se i dati in arrivo contengono colonne senza nome, vengono inseriti nel DataSet secondo il criterio "Column1", "Column2" e così via. Quando vengono aggiunte più set di risultati per il DataSet ogni set di risultati viene inserito in una tabella separata. Set di risultati aggiuntivi sono denominati aggiungendo i valori integrali al nome della tabella specificato (ad esempio, "Table", "Table1", "Table2" e così via.). Applicazioni che utilizzano nomi di colonna e tabella è necessario assicurarsi che non si verifichino conflitti con i criteri di denominazione.

FillSchema non restituisce alcuna riga. Utilizzare il Fill metodo per aggiungere righe a un DataTable.

System_CAPS_noteNota

Quando si gestiscono istruzioni SQL batch che restituiscono più risultati, l'implementazione di FillSchema per il Provider di dati .NET Framework per OLE DB consente di recuperare informazioni sullo schema per il primo risultato. Per recuperare informazioni sullo schema per più risultati, utilizzare Fill con il MissingSchemaAction impostato su AddWithKey.

Quando si utilizza FillSchema, il Provider di dati .NET Framework per SQL Server aggiunge una clausola FOR BROWSE all'istruzione da eseguire. L'utente è necessario essere consapevole dei potenziali effetti collaterali, ad esempio interferenza con l'utilizzo di istruzioni SET FMTONLY ON. Per ulteriori informazioni, vedere la documentazione Online di SQL Server.

Nell'esempio seguente viene utilizzata la classe derivata, SqlDataAdapter, per riempire un DataSet con lo schema e restituisce un DataTable.

public static DataTable GetCustomerData(string dataSetName,
    string connectionString)
{
    DataTable table = new DataTable(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(table, SchemaType.Mapped);
        adapter.Fill(table);
        return table;
    }
}

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: