IDataAdapter.Update(DataSet) Metodo

Definizione

Chiama le corrispondenti istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto DataSet specificato da un oggetto DataTable denominato "Table".

public:
 int Update(System::Data::DataSet ^ dataSet);
public int Update (System.Data.DataSet dataSet);
abstract member Update : System.Data.DataSet -> int
Public Function Update (dataSet As DataSet) As Integer

Parametri

dataSet
DataSet

L'oggetto DataSet utilizzato per aggiornare l'origine dati.

Restituisce

Numero di righe aggiornate correttamente dall'oggetto DataSet.

Eccezioni

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

Esempio

Nell'esempio seguente viene utilizzata la classe derivata , OleDbDataAdapter, all'origine Update dati. In questo esempio si presuppone che sia stato creato un OleDbDataAdapter oggetto e un oggetto DataSet.

static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        connection.Open();
        OleDbDataAdapter adapter =
            new OleDbDataAdapter();
        adapter.SelectCommand =
            new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder =
            new OleDbCommandBuilder(adapter);

        adapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        // Without the OleDbCommandBuilder, this line would fail.
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.Update(dataSet);
    }
    return dataSet;
}
Public Function CreateCommandAndUpdate( _
    ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Dim dataSet As New DataSet()

    Using connection As New OleDbConnection(connectionString)
        connection.Open()
        Dim adapter As New OleDbDataAdapter()

        adapter.SelectCommand = New OleDbCommand( _
            queryString, connection)

        Dim builder As OleDbCommandBuilder = _
            New OleDbCommandBuilder(adapter)

        adapter.Fill(dataSet)

        ' Code to modify the data in the DataSet here. 

        ' Without the OleDbCommandBuilder this line would fail.
        builder.GetUpdateCommand()
        adapter.Update(dataSet)
    End Using
    Return dataSet
End Function

Commenti

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

Tenere presente che queste istruzioni non vengono eseguite come processo batch; ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il GetChanges metodo se è necessario controllare la sequenza di tipi di istruzione (ad esempio, INSERTs prima di UPDATEs). Per altre informazioni, vedere Aggiornamento delle origini dati con DataAdapters.

Se non sono state specificate istruzioni INSERT, UPDATE o DELETE, il Update metodo genera un'eccezione. Tuttavia, è possibile creare un SqlCommandBuilder oggetto o OleDbCommandBuilder per generare automaticamente istruzioni SQL per gli aggiornamenti a tabella singola se si imposta la SelectCommand proprietà di un provider di dati .NET Framework. Tutte le istruzioni SQL aggiuntive non impostate vengono quindi generate da CommandBuilder. Questa logica di generazione richiede che le informazioni sulla colonna chiave siano presenti in DataSet. Per altre informazioni, vedere Generazione di comandi con CommandBuilders.

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

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

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

  1. I valori in DataRow vengono spostati nei valori dei parametri.

  2. Viene generato l'evento OnRowUpdating.

  3. Il comando viene eseguito.

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

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

  6. Viene generato l'evento OnRowUpdated.

  7. Viene chiamato AcceptChanges.

A ogni comando associato a in IDataAdapter genere è associata una raccolta di parametri. I parametri vengono mappati alla riga corrente tramite le SourceColumn proprietà e SourceVersion della classe di un provider di Parameter dati .NET Framework. SourceColumn fa riferimento a una DataTable colonna a cui fa IDataAdapter riferimento per ottenere i valori dei parametri per la riga corrente.

SourceColumn fa riferimento al nome della colonna non mappata prima dell'applicazione di eventuali mapping di tabella. Se SourceColumn fa riferimento a una colonna inesistente, l'azione eseguita dipende da uno dei valori seguenti MissingMappingAction .

Valore di enumerazione Azione intrapresa
MissingMappingAction.Passthrough Utilizzare i nomi delle colonne di origine e i nomi delle DataSet tabelle in se non è presente alcun mapping.
MissingMappingAction.Ignore Viene generato un oggetto SystemException . Quando i mapping vengono impostati in modo esplicito, un mapping mancante per un parametro di input è in genere causato da un errore.
MissingMappingAction.Error Viene generato un oggetto SystemException .

La SourceColumn proprietà viene usata anche per eseguire il mapping del valore per i parametri di output o input/output a DataSet. Viene generata un'eccezione se fa riferimento a una colonna inesistente.

La SourceVersion proprietà della classe di Parameter un provider di dati .NET Framework determina se usare la Originalversione , Currento Proposed del valore della colonna. Questa funzionalità viene spesso usata per includere i valori originali nella clausola WHERE di un'istruzione UPDATE per verificare la presenza di violazioni della concorrenza ottimistica.

Nota

Se si verifica un errore durante l'aggiornamento di una riga, viene generata un'eccezione e l'esecuzione dell'aggiornamento viene interrotta. Per continuare l'operazione di aggiornamento senza generare eccezioni quando si verifica un errore, impostare la ContinueUpdateOnError proprietà su true prima di chiamare Update. È anche possibile rispondere agli errori per riga all'interno dell'evento RowUpdated di un Oggetto DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated , impostare la Status proprietà di RowUpdatedEventArgs su Continue.

Si applica a