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.Update (DataSet)

 

Data di pubblicazione: ottobre 2016

Aggiorna i valori del database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni inseriti, aggiornati o eliminati riga nell'oggetto specificato DataSet.

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

public override int Update(
	DataSet dataSet
)

Parametri

dataSet
Type: System.Data.DataSet

Il DataSet utilizzato per aggiornare l'origine dati.

Valore restituito

Type: System.Int32

Il numero di righe aggiornate correttamente dal DataSet.

Exception Condition
InvalidOperationException

La tabella di origine non è valida.

DBConcurrencyException

Un tentativo di eseguire un'istruzione INSERT, UPDATE o DELETE ha effetto su alcun record.

Quando un'applicazione chiama il Update (metodo), il DbDataAdapter esamina il RowState proprietà ed esegue le istruzioni INSERT, UPDATE o DELETE necessarie in modo iterativo per ogni riga, in base all'ordine degli indici configurati nel DataSet. Ad esempio, Update potrebbe eseguire un'istruzione DELETE, seguita da un'istruzione INSERT, quindi un'altra istruzione DELETE, in per l'ordinamento delle righe di DataTable.

Si noti che queste istruzioni non vengono eseguite come un processo batch. ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il GetChanges in situazioni in cui è necessario controllare la sequenza di tipi istruzioni (ad esempio, gli aggiornamenti). Per altre informazioni, vedere Aggiornamenti di origini dati tramite DataAdapter.

Se le istruzioni INSERT, UPDATE o DELETE non sono state specificate, il Update metodo genera un'eccezione. Tuttavia, è possibile creare un SqlCommandBuilder o OleDbCommandBuilder oggetto per generare automaticamente le istruzioni SQL per gli aggiornamenti di tabelle singole, se si imposta la SelectCommand proprietà di un provider di dati .NET Framework. Quindi, generate da tutte le istruzioni SQL aggiuntive non si imposta la CommandBuilder. Questa logica di generazione richiede informazioni della colonna chiave siano presenti nel DataSet. Per altre informazioni, vedere Generazione di comandi con CommandBuilder.

Il Update metodo recupera le righe dalla tabella elencata nel primo mapping prima di eseguire un aggiornamento. Il Update Aggiorna quindi la riga utilizzando il valore di UpdatedRowSource proprietà. Tutte le eventuali righe restituite vengono ignorate.

Dopo il caricamento di tutti i dati nel DataSet, OnRowUpdated viene generato l'evento, consentendo all'utente di controllare la riconciliazione DataSet riga ed eventuali parametri di output restituiti dal comando. Dopo che una riga viene aggiornata correttamente, vengono accettate le modifiche a tale riga.

Quando si utilizza Update, l'ordine di esecuzione è il seguente:

  1. I valori di DataRow vengono spostati i valori dei parametri.

  2. Viene generato l'evento OnRowUpdating.

  3. Esegue il comando.

  4. Se il comando è impostato su FirstReturnedRecord, quindi il primo risultato restituito viene inserito nel DataRow.

  5. Se sono presenti parametri di output, vengono inseriti nel DataRow.

  6. Viene generato l'evento OnRowUpdated.

  7. Chiamata del metodo AcceptChanges.

Ciascun comando associato il DbDataAdapter in genere è una raccolta di parametri associata. I parametri vengono mappati alla riga corrente tramite il SourceColumn e SourceVersion le proprietà di un provider di dati .NET Framework Parameter (classe). SourceColumn fa riferimento a un DataTable colonna che la DbDataAdapter riferimenti per ottenere i valori dei parametri della riga corrente.

SourceColumn indica il nome di colonna non mappata prima i mapping delle tabelle sono stati applicati. Se SourceColumn fa riferimento a una colonna inesistente, l'azione eseguita dipende da uno dei seguenti MissingMappingAction valori.

Valore di enumerazione

Azione eseguita

MissingMappingAction.Passthrough

Utilizzare i nomi di colonna di origine e nomi di tabella di DataSet se è presente alcun mapping.

MissingMappingAction.Ignore

Oggetto SystemException viene generato. Quando i mapping vengono impostati in modo esplicito, la mancanza di mapping per un parametro di input è in genere il risultato di un errore.

MissingMappingAction.Error

Oggetto SystemException viene generato.

Il SourceColumn proprietà viene utilizzata anche per il mapping del valore per l'output o i parametri di input/output di DataSet. Se fa riferimento a una colonna inesistente, viene generata un'eccezione.

Il SourceVersion proprietà di un provider di dati .NET Framework Parameter classe determina se utilizzare la versione originale, Current o Proposed del valore della colonna. Questa funzionalità viene spesso utilizzata per includere i valori originali nella clausola WHERE di un'istruzione UPDATE per verificare la presenza di eventuali violazioni alla concorrenza ottimistica.

System_CAPS_noteNota

Se si verifica un errore durante l'aggiornamento di una riga, viene generata un'eccezione e l'esecuzione dell'aggiornamento non è più disponibile. Per continuare l'operazione di aggiornamento senza generare eccezioni quando viene rilevato un errore, impostare la ContinueUpdateOnError proprietà true prima di chiamare Update. È anche possibile rispondere agli errori in una singola riga all'interno di RowUpdated eventi di un oggetto DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno di RowUpdated set di eventi, il Status proprietà del RowUpdatedEventArgs a Continue.

Nell'esempio seguente viene utilizzata la classe derivata, OleDbDataAdapter, per aggiornare l'origine dati.

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers);

        return customers;
    }
}

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