Share via


Cenni preliminari sul riempimento dei dataset e l'esecuzione di query sui dati

Aggiornamento: novembre 2007

Il meccanismo utilizzato generalmente in Visual Studio per l'esecuzione di query Transact-SQL e per la compilazione dei dataset è il TableAdapter.

È possibile eseguire istruzioni SQL o stored procedure in un'origine dati utilizzando oggetti TableAdapter o oggetti di comando, ad esempio SqlCommand. Per caricare i dati in dataset creati mediante gli strumenti di progettazione di Visual Studio, utilizzare i TableAdapter. Per caricare i dati in dataset creati a livello di codice, si utilizzano gli adattatori dati. Se nell'applicazione non vengono utilizzati i dataset, usare gli oggetti comando per eseguire le istruzioni SQL o le stored procedure direttamente in un database.

Per ulteriori informazioni su

Vedere

Riempimento di un dataset mediante un TableAdapter

Procedura: riempire un dataset

TableAdapter

Cenni preliminari sugli oggetti TableAdapter

Riempimento di un dataset mediante un adattatore dati

Compilazione di un DataSet da un oggetto DataAdapter (ADO.NET)

Riempimento di dataset

Se si crea un dataset con uno strumento di progettazione di Visual Studio, come Progettazione DataSet o la Configurazione guidata origine dati, utilizzare un TableAdapter per compilarlo. I TableAdapter consentono di eseguire le istruzioni SQL o le stored procedure.

Se si crea un dataset senza gli strumenti di progettazione, è necessario utilizzare gli adattatori dati per riempire e aggiornare i dati. Gli oggetti TableAdapter non sono classi vere e proprie in .NET Framework 3,5, di conseguenza non sono idonei ad essere utilizzati con dataset creati senza utilizzare strumenti di progettazione. Per ulteriori informazioni sul caricamento dei dati nei dataset utilizzando TableAdapter o adattatori dati, vedere Procedura: riempire un dataset.

Query TableAdapter

È possibile eseguire query TableAdapter per riempire di dati i dataset e, in maniera più specifica, per caricare i dati nelle DataTable che costituiscono un dataset. È possibile creare query TableAdapter utilizzando la Configurazione guidata query TableAdapter in Progettazione DataSet. Le query TableAdapter vengono visualizzate come metodi denominati su un TableAdapter e vengono eseguite chiamando il metodo TableAdapter. Per ulteriori informazioni sulla creazione e l'esecuzione di query TableAdapter, vedere le pagine seguenti:

Oggetti comando

Gli oggetti comando consentono di eseguire istruzioni SQL e stored procedure direttamente in un database, senza ricorrere a DataSet, TableAdapter o DataAdapter. Il termine oggetto comando si riferisce al comando specifico per il Provider di dati .NET Framework utilizzato dall'applicazione. Nel caso in cui, ad esempio, l'applicazione utilizzi il Provider di dati .NET Framework per SQL Server, l'oggetto comando sarebbe SqlCommand.

È possibile configurare i comandi per eseguire query sui dati mediante istruzioni SQL o stored procedure impostando la proprietà CommandType del comando dati su uno dei valori dell'enumerazione CommandType. Impostare CommandType su Text per l'esecuzione di istruzioni SQL oppure impostarlo su StoredProcedure per l'esecuzione di stored procedure. Successivamente, impostare la proprietà CommandText su un'istruzione SQL o sul nome della stored procedure. Per eseguire il comando dati, effettuare quindi la chiamata a uno dei relativi metodi Execute (ExecuteReader, ExecuteScalar, ExecuteNonQuery).

Ciascuno dei .Provider di dati .NET Framework (ADO.NET) offre un oggetto comando ottimizzato per database specifici.

I comandi dati consentono di effettuare le seguenti operazioni nell'applicazione:

  • Esecuzione di comandi Select che restituiscono un risultato leggibile dall'utente in modo diretto, senza doverlo caricare nel dataset. Per leggere i risultati è possibile ricorrere a un lettore dati (oggetto OleDbDataReader, SqlDataReader, OdbcDataReader o OracleDataReader), il cui funzionamento è analogo a quello di un cursore di tipo forward only di sola lettura al quale possono essere associati i controlli. Si tratta di un'efficace strategia per contenere l'utilizzo di memoria e caricare in modo rapido dati in sola lettura.

  • Esecuzione di comandi DDL per creare, modificare e rimuovere tabelle, stored procedure e altre strutture del database. Per eseguire queste operazioni è tuttavia necessario disporre delle autorizzazioni appropriate.

  • Esecuzione di comandi per ottenere le informazioni sul catalogo del database.

  • Esecuzione di comandi SQL dinamici per aggiornare, inserire o eliminare record, anziché aggiornare tabelle dataset e copiare quindi le modifiche nel database.

  • Esecuzione di comandi che restituiscono un valore scalare, ovvero un valore singolo, quali i risultati di una funzione aggregata (SUM, COUNT, AVG e così via).

  • Esecuzione di comandi che restituiscono dati da un database di SQL Server (versione 7.0 o successiva) in formato XML. Un tipico utilizzo di questi comandi consiste nell'eseguire una query e ottenere i dati in formato XML, applicare ai dati una trasformazione XSLT per convertirli in formato HTML, quindi inviare i risultati a un browser.

Nelle proprietà di un comando sono presenti tutte le informazioni necessarie a eseguire un comando in un database, vale a dire:

  • Una connessione   Il comando fa riferimento a una connessione utilizzata per comunicare con il database.

  • Il nome o il testo di un comando   Nel comando è incluso il testo effettivo di un'istruzione SQL o il nome di una stored procedure da eseguire.

  • **I parametri   **Potrebbe essere necessario passare insieme al comando i valori dei relativi parametri (parametri di input). Il comando potrebbe anche restituire valori sotto forma di valore restituito oppure di valori dei parametri di output. In ciascun comando è disponibile un insieme di parametri che possono essere impostati o letti singolarmente per passare o per ricevere i valori. Per ulteriori informazioni, vedere Procedura: ottenere e impostare parametri per oggetti comando.

Per eseguire un comando è necessario scegliere un metodo in base al risultato che si desidera ottenere. Se, ad esempio, si prevede di ottenere delle righe, sarà necessario chiamare il metodo ExecuteReader del comando che restituisce i record di un lettore dati. Se si esegue un comando UPDATE, INSERT o DELETE, sarà necessario chiamare il metodo ExecuteNonQuery del comando che restituisce un valore che indica il numero di righe interessate. Per eseguire una funzione di aggregazione, ad esempio restituire il conteggio degli ordini di un cliente, viene chiamato il metodo ExecuteScalar.

Gruppi di risultati multipli

Un utilizzo tipico dell'oggetto comando prevede la restituzione di una tabella di dati (un insieme di righe). Tuttavia, i comandi possono anche consentire l'esecuzione di routine che restituiscono più insiemi di risultati in svariati modi. Uno dei modi prevede che nel comando venga inserito un riferimento a una stored procedure che restituisce più gruppi di risultati ma, in alternativa, nel comando possono essere presenti due o più istruzioni o stored procedure. In tal caso le istruzioni o le stored procedure verranno eseguite in sequenza e con una singola chiamata verranno restituiti più gruppi di risultati.

Se per un comando si specificano più istruzioni o stored procedure, è necessario che siano tutte dello stesso tipo. È possibile, ad esempio, eseguire istruzioni SQL o stored procedure consecutive mentre non è possibile combinare chiamate a stored procedure e istruzioni SQL nello stesso comando. Per ulteriori informazioni, vedere Recupero di dati mediante un DataReader (ADO.NET).

Nota:

Per Oracle il provider di dati .NET Framework non supporta le istruzioni SQL in batch. Consente, tuttavia, di utilizzare più parametri di output REF CURSOR per riempire un dataset, ciascuno nella propria tabella dati. È necessario definire i parametri, contrassegnarli come parametri di output e indicare che si tratta di tipi di dati REF CURSOR. Si tenga presente che non sarà possibile utilizzare il metodo Update quando l'oggetto OracleDataAdapter viene riempito con parametri REF CURSOR per una stored procedure, in quanto in Oracle non vengono fornite le informazioni necessarie per determinare quali devono essere il nome della tabella e i nomi delle colonne al momento dell'esecuzione dell'istruzione SQL.

Sicurezza

Quando si utilizzano comandi dati con una proprietà CommandType impostata su Text, controllare attentamente le informazioni inviate da un client prima di passarle al database. Utenti malintenzionati potrebbero tentare di inviare istruzioni SQL modificate o aggiuntive con l'obiettivo di ottenere un accesso non autorizzato o di danneggiare il database. Prima di trasferire l'input di un utente in un database, si consiglia di verificare sempre che le informazioni siano valide. È opportuno utilizzare, quando possibile, query con parametri o stored procedure.

Vedere anche

Altre risorse

Guida introduttiva all'accesso ai dati

Connessione ai dati in Visual Studio

Preparazione dell'applicazione al ricevimento di dati

Recupero di dati nell'applicazione

Visualizzazione di dati su form nelle applicazioni Windows

Modifica di dati nell'applicazione

Convalida dei dati

Salvataggio di dati

Risorse di dati