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".Calls the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified DataSet from a DataTable named "Table".

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

Parametri

dataSet
DataSet

L'oggetto DataSet utilizzato per aggiornare l'origine dati.The DataSet used to update the data source.

Restituisce

Numero di righe aggiornate correttamente dall'oggetto DataSet.The number of rows successfully updated from the DataSet.

Eccezioni

Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE non ha avuto effetto su alcun record.An attempt to execute an INSERT, UPDATE, or DELETE statement resulted in zero records affected.

Esempi

Nell'esempio seguente viene utilizzata la classe derivata OleDbDataAdapter,, Update per l'origine dati.The following example uses the derived class, OleDbDataAdapter, to Update the data source. In questo esempio si presuppone che siano stati OleDbDataAdapter creati un DataSetoggetto e un oggetto.This example assumes that you have created an OleDbDataAdapter and a 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 richieste in modo iterativo per ogni riga, in base all'ordine degli indici configurati nel DataSet.When an application calls the Update method, the IDataAdapter examines the RowState property, and executes the required INSERT, UPDATE, or DELETE statements iteratively for each row, based on the order of the indexes configured in the DataSet. Ad esempio, Update può eseguire un'istruzione DELETE, seguito da un'istruzione INSERT e quindi da un'altra istruzione DELETE, DataTablea causa dell'ordinamento delle righe in.For example, Update might execute a DELETE statement, followed by an INSERT statement, and then another DELETE statement, because of the ordering of the rows in the DataTable.

Tenere presente che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente.Be aware that these statements are not performed as a batch process; each row is updated individually. Un'applicazione può chiamare il GetChanges metodo se è necessario controllare la sequenza di tipi di istruzione, ad esempio inserimenti prima degli aggiornamenti.An application can call the GetChanges method if you must control the sequence of statement types (for example, INSERTs before UPDATEs). Per ulteriori informazioni, vedere aggiornamento di origini dati con DataAdapter.For more information, see Updating Data Sources with DataAdapters.

Se non sono state specificate istruzioni INSERT, Update o DELETE, il Update metodo genera un'eccezione.If INSERT, UPDATE, or DELETE statements have not been specified, the Update method generates an exception. Tuttavia, è possibile creare un SqlCommandBuilder oggetto OleDbCommandBuilder o per generare automaticamente istruzioni SQL per gli aggiornamenti di una singola tabella se si SelectCommand imposta la proprietà di un provider di dati .NET Framework.However, you can create a SqlCommandBuilder or OleDbCommandBuilder object to automatically generate SQL statements for single-table updates if you set the SelectCommand property of a .NET Framework data provider. Quindi, eventuali istruzioni SQL aggiuntive che non vengono impostate vengono generate da CommandBuilder.Then, any additional SQL statements that you do not set are generated by the CommandBuilder. Questa logica di generazione richiede che le informazioni sulle colonne chiave siano DataSetpresenti in.This generation logic requires key column information to be present in the DataSet. Per altre informazioni, vedere generazione di comandi con CommandBuilder.For more information see Generating Commands with CommandBuilders.

Il Update metodo recupera le righe dalla tabella elencata nel primo mapping prima di eseguire un aggiornamento.The Update method retrieves rows from the table listed in the first mapping before performing an update. Il Update aggiorna quindi la riga usando il valore UpdatedRowSource della proprietà.The Update then updates the row using the value of the UpdatedRowSource property. Eventuali righe aggiuntive restituite verranno ignorate.Any additional rows returned are ignored.

Dopo che i dati sono stati caricati in DataSet, viene OnRowUpdated generato l'evento, che consente all'utente DataSet di esaminare la riga riconciliata e tutti i parametri di output restituiti dal comando.After any data is loaded back into the DataSet, the OnRowUpdated event is raised, allowing the user to inspect the reconciled DataSet row and any output parameters returned by the command. Quando una riga viene aggiornata correttamente, vengono accettate le modifiche apportate alla riga.After a row updates successfully, the changes to that row are accepted.

Quando si UpdateUSA, l'ordine di esecuzione è il seguente:When using Update, the order of execution is as follows:

  1. I valori in DataRow vengono spostati nei valori dei parametri.The values in the DataRow are moved to the parameter values.

  2. Viene generato l'evento OnRowUpdating.The OnRowUpdating event is raised.

  3. Il comando viene eseguito.The command executes.

  4. Se il comando è impostato su FirstReturnedRecord, il primo risultato restituito verrà inserito DataRowin.If the command is set to FirstReturnedRecord, then the first returned result is put in the DataRow.

  5. Se sono presenti parametri di output, vengono inseriti in DataRow.If there are output parameters, they are put in the DataRow.

  6. Viene generato l'evento OnRowUpdated.The OnRowUpdated event is raised.

  7. Viene chiamato AcceptChanges.AcceptChanges is called.

A ogni comando associato a IDataAdapter è in genere associata una raccolta di parametri.Each command associated with the IDataAdapter usually has a parameter collection associated with it. Viene eseguito il mapping dei parametri alla riga corrente SourceColumn tramite SourceVersion le proprietà e di Parameter una classe del provider di dati .NET Framework.Parameters are mapped to the current row through the SourceColumn and SourceVersion properties of a .NET Framework data provider's Parameter class. SourceColumnfa riferimento a DataTable una colonna a IDataAdapter cui si fa riferimento per ottenere i valori dei parametri per la riga corrente.SourceColumn refers to a DataTable column that the IDataAdapter references to obtain parameter values for the current row.

SourceColumnfa riferimento al nome di colonna non mappato prima dell'applicazione di qualsiasi mapping di tabella.SourceColumn refers to the unmapped column name before any table mappings have been applied. Se SourceColumn fa riferimento a una colonna inesistente, l'azione eseguita dipende da uno dei valori MissingMappingAction seguenti.If SourceColumn refers to a nonexistent column, the action taken depends on one of the following MissingMappingAction values.

Valore di enumerazioneEnumeration Value Azione intrapresaAction Taken
MissingMappingAction.Passthrough Utilizzare i nomi di colonna e di tabella di origine DataSet in se non è presente alcun mapping.Use the source column names and table names in the DataSet if no mapping is present.
MissingMappingAction.Ignore Viene SystemException generato un oggetto.A SystemException is generated. Quando i mapping vengono impostati in modo esplicito, un mapping mancante per un parametro di input è in genere causato da un errore.When the mappings are explicitly set, a missing mapping for an input parameter is usually caused by an error.
MissingMappingAction.Error Viene SystemException generato un oggetto.A SystemException is generated.

La SourceColumn proprietà viene usata anche per eseguire il mapping del valore per i parametri di output o di input DataSet/output a.The SourceColumn property is also used to map the value for output or input/output parameters back to the DataSet. Viene generata un'eccezione se fa riferimento a una colonna inesistente.An exception is generated if it refers to a nonexistent column.

La SourceVersion proprietà della Parameter classe di un provider di dati .NET Framework determina se utilizzare la Originalversione Current, o Proposed del valore della colonna.The SourceVersion property of a .NET Framework data provider's Parameter class determines whether to use the Original, Current, or Proposed version of the column value. Questa funzionalità viene spesso utilizzata per includere i valori originali nella clausola WHERE di un'istruzione UPDATE per verificare le violazioni della concorrenza ottimistica.This capability is frequently used to include original values in the WHERE clause of an UPDATE statement to check for optimistic concurrency violations.

Nota

Se si verifica un errore durante l'aggiornamento di una riga, viene generata un'eccezione e l'esecuzione dell'aggiornamento viene sospesa.If an error occurs while updating a row, an exception is thrown and execution of the update is discontinued. Per continuare l'operazione di aggiornamento senza generare eccezioni quando viene rilevato un errore, impostare ContinueUpdateOnError la proprietà true su prima Updatedi chiamare.To continue the update operation without generating exceptions when an error is encountered, set the ContinueUpdateOnError property to true before calling Update. È inoltre possibile rispondere agli errori in base alle singole righe all'interno dell' RowUpdated evento di un oggetto DataAdapter.You may also respond to errors on a per-row basis within the RowUpdated event of a DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all' RowUpdated interno dell'evento, Status impostare la proprietà RowUpdatedEventArgs di Continuesu.To continue the update operation without generating an exception within the RowUpdated event, set the Status property of the RowUpdatedEventArgs to Continue.

Si applica a