Finestra di dialogo Opzioni avanzate generazione istruzioni SQL

Consente di controllare come vengono create le stored procedure o le istruzioni SQL per un adattatore. La finestra di dialogo viene visualizzata facendo clic sul pulsante Opzioni avanzate nella pagina Istruzioni SQL di una delle procedure guidate per i dati. Tutte le opzioni di questa finestra di dialogo riguardano le istruzioni o le procedure chiamate nell'ambito di una procedura di aggiornamento, ad esempio CustomersTableAdapter.Update(DataTable).

Elenco degli elementi dell'interfaccia utente

  • Genera istruzioni Insert, Update e Delete
    Selezionando questa opzione vengono create istruzioni SQL o stored procedure per gli oggetti UpdateCommand, InsertCommand e DeleteCommand dell'adattatore. Le specifiche dell'istruzione o della procedura da generare vengono impostate nel riquadro Scegli tipo di query della procedura guidata. Se la casella di controllo non è selezionata, le restanti opzioni della finestra di dialogo sono disabilitate in quanto non applicabili.

    Di norma questa casella deve essere deselezionata nelle seguenti circostanze:

    • L'adattatore verrà utilizzato soltanto per leggere dati da un'origine dati, non per riscriverli. Deselezionando questa casella si riduce la quantità di codice del form o componente.

    • Si ha intenzione di compilare manualmente i comandi al termine della procedura guidata.

    Se la casella di controllo non è selezionata e non esistono istruzioni o stored procedure per gli oggetti UpdateCommand, InsertCommand o DeleteCommand, effettuando la chiamata del metodo Update dell'adattatore dati non succede nulla.

  • Usa concorrenza ottimistica
    Se questa opzione è selezionata, viene generato un comando SQL con una clausola WHERE che confronta il valore di ogni colonna del record in fase di aggiornamento con il record corrispondente del database.

    Nota

    L'opzione è disponibile solo se è selezionata la casella di controllo Genera istruzioni Insert, Update e Delete.

    La sintassi di un'istruzione Update generata con questa opzione, ad esempio, è la seguente:

    UPDATE Customers
    SET CustomerID = ?, CompanyName = ?, Phone = ?
    WHERE (CustomerID = ?) AND (CompanyName = ?) AND 
          (Phone = ? OR ? IS NULL AND Phone IS NULL);
    

    Se la casella di controllo non è selezionata, la sintassi sarà la seguente:

    UPDATE Customers
    SET CustomerID = ?, CompanyName = ?, Phone = ?
    WHERE (CustomerID = ?)
    

    Il controllo del valore di ogni colonna ha come diretta conseguenza la mancata riuscita del comando se una colonna qualsiasi è cambiata, come nel caso in cui un altro utente abbia modificato il record dopo che è stato letto nel dataset. Se l'opzione non è stata attivata e la clausola WHERE permette semplicemente di individuare il record, le modifiche apportate da altri utenti potrebbero venire annullate in seguito all'aggiornamento senza che venga visualizzato alcun messaggio.

    Per ulteriori informazioni sul controllo della concorrenza durante l'aggiornamento da un dataset, vedere Introduzione alla concorrenza dei dati in ADO.NET.

  • Aggiorna la tabella dati
    Se questa opzione è selezionata, viene generata un'istruzione Select per ogni comando Update e Insert.

    Nota

    L'opzione è disponibile solo se è selezionata la casella di controllo Genera istruzioni Insert, Update e Delete.

    L'istruzione Select viene aggiunta all'oggetto comando corrispondente nell'adattatore e viene eseguita non appena viene completata l'esecuzione del comando Update o Insert. Questa istruzione è configurata in modo da restituire soltanto un record, e precisamente la versione più recente del record appena aggiornato.

    Nota

    È possibile aggiungere più istruzioni alla proprietà CommandText dell'oggetto comando di un adattatore separandole una dall'altra mediante un punto e virgola (;).

    Se si ottiene una nuova versione del record, verranno scritti nel dataset i valori aggiornati delle colonne del record, in particolare:

    • Colonne in cui viene immesso un valore predefinito dal database

    • Colonne con incremento automatico

    • Colonne timestamp

    • Colonne modificate dal risultato di un trigger di database.

    Tenere presente che, poiché con questa opzione vengono eseguite due istruzioni per ogni aggiornamento, ovvero l'istruzione di aggiornamento e la successiva istruzione Select, può essere poco pratico utilizzarla quando deve essere aggiornata la maggior parte dei record di un dataset. Sarà invece più efficiente inserire di nuovo i dati nella la tabella in un'unica operazione dopo che tutti gli aggiornamenti sono stati effettuati.

    Nota

    L'aggiornamento della tabella di dati è disponibile soltanto per i database che supportano l'elaborazione in batch delle istruzioni SQL. In Microsoft Access, ad esempio, non è possibile aggiornare la tabella di dati nell'ambito dello stesso comando utilizzato per eseguire altre operazioni.

Vedere anche

Concetti

Novità dello sviluppo di applicazioni di dati

Associazione di controlli Windows Form ai dati in Visual Studio

Associazione di controlli ai dati in Visual Studio

Altre risorse

Procedure dettagliate relative ai dati

Connessione ai dati in Visual Studio

Preparazione dell'applicazione al ricevimento di dati

Recupero di dati nell'applicazione

Modifica di dati nell'applicazione

Convalida dei dati

Salvataggio di dati