DbDataAdapter.Update Metodo

Definizione

Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto DataSet.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the DataSet.

Overload

Update(DataSet, String)

Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nell'oggetto DataSet con il nome DataTable specificato.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the DataSet with the specified DataTable name.

Update(DataRow[], DataTableMapping)

Aggiorna i valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nella matrice specificata degli oggetti DataSet.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified array of DataSet objects.

Update(DataTable)

Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto DataTable specificato.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified DataTable.

Update(DataSet)

Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto DataSet specificato.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified DataSet.

Update(DataRow[])

Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nella matrice specificata nell'oggetto DataSet.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified array in the DataSet.

Update(DataSet, String)

Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nell'oggetto DataSet con il nome DataTable specificato.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the DataSet with the specified DataTable name.

public:
 int Update(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Update (System.Data.DataSet dataSet, string srcTable);
override this.Update : System.Data.DataSet * string -> int

Parametri

dataSet
DataSet

L'oggetto DataSet da utilizzare per aggiornare l'origine dati.The DataSet to use to update the data source.

srcTable
String

Nome della tabella di origine da utilizzare per il mapping della tabella.The name of the source table to use for table mapping.

Restituisce

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

Eccezioni

DataSet non è valido.The DataSet is invalid.

Tabella di origine non valida.The source table is invalid.

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,, per aggiornare l'origine dati.The following example uses the derived class, OleDbDataAdapter, to update the data source.

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString, string tableName) 
{
    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, tableName);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String, _
    ByVal tableName As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        adapter.Update(customers, tableName)

        Return customers
    End Using
End Function

Commenti

Quando un'applicazione chiama il Update metodo DbDataAdapter , 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 DbDataAdapter 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, a causa dell'ordinamento delle righe DataTablein.For example, Update might execute a DELETE statement, followed by an INSERT statement, and then another DELETE statement, due to the ordering of the rows in the DataTable.

Si noti che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente.It should be noted that these statements are not performed as a batch process; each row is updated individually. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione (ad esempio, inserire prima dell'aggiornamento).An application can call the GetChanges method in situations where you must control the sequence of statement types (for example, INSERT before UPDATE). 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 supporta scenari in cui DataSet l'oggetto DataTable contiene più oggetti i cui nomi differiscono solo per maiuscole/minuscole.The Update method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. Quando più tabelle con lo stesso nome, ma con casi diversi, esistono in DataSetun Update oggetto, esegue un confronto con distinzione tra maiuscole e minuscole per trovare la tabella corrispondente e genera un'eccezione se non esiste alcuna corrispondenza esatta.When multiple tables with the same name, but different case, exist in a DataSet, Update performs a case-sensitive comparison to find the corresponding table, and generates an exception if no exact match exists. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

DataSet ds = new DataSet();  
 ds.Tables.Add("aaa");  
 ds.Tables.Add("AAA");  
 adapter.Update(ds, "aaa"); // Updates "aaa", which already exists in the DataSet.  
 adapter.Update(ds, "AAA"); // Updates "AAA", which already exists in the DataSet.  
    adapter.Update(ds, "Aaa"); // Results in an exception.  

Se Update viene chiamato e contiene DataSet un DataTable solo oggetto il cui DataTable nome è diverso solo per caso, viene aggiornato.If Update is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. In questo scenario, il confronto non fa distinzione tra maiuscole e minuscole.In this scenario, the comparison is case insensitive. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

DataSet dataset = new DataSet();  
 dataset.Tables.Add("aaa");  
    adapter.Update(dataset, "AAA"); // Updates table "aaa" because only one similarly named table is in the DataSet.  

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. La Update riga viene quindi aggiornata usando il valore UpdatedRowSource della proprietà.The Update then refreshes 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 placed in the DataRow.

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

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

  7. Viene chiamato AcceptChanges.AcceptChanges is called.

Ogni comando associato a DbDataAdapter ha in genere una raccolta di parametri associata.Each command associated with the DbDataAdapter usually has a parameters 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 DbDataAdapter cui si fa riferimento per ottenere i valori dei parametri per la riga corrente.SourceColumn refers to a DataTable column that the DbDataAdapter 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 il risultato di un errore.When the mappings are explicitly set, a missing mapping for an input parameter is usually the result of 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 versione originale, corrente o proposta 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 often 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.

Vedi anche

Update(DataRow[], DataTableMapping)

Aggiorna i valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nella matrice specificata degli oggetti DataSet.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified array of DataSet objects.

protected:
 virtual int Update(cli::array <System::Data::DataRow ^> ^ dataRows, System::Data::Common::DataTableMapping ^ tableMapping);
protected virtual int Update (System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping tableMapping);
override this.Update : System.Data.DataRow[] * System.Data.Common.DataTableMapping -> int
Protected Overridable Function Update (dataRows As DataRow(), tableMapping As DataTableMapping) As Integer

Parametri

dataRows
DataRow[]

Matrice di oggetti DataRow utilizzata per aggiornare l'origine dati.An array of DataRow objects used to update the data source.

tableMapping
DataTableMapping

Insieme TableMappings da utilizzare.The TableMappings collection to use.

Restituisce

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

Eccezioni

DataSet non è valido.The DataSet is invalid.

Tabella di origine non valida.The source table is invalid.

Non è presente alcuna classe DataRow da aggiornare.No DataRow exists to update.

-oppure--or- Non è presente alcuna classe DataTable da aggiornare.No DataTable exists to update.

-oppure--or- Non è presente alcun oggetto DataSet da utilizzare come origine.No DataSet exists to use as a source.

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.

Commenti

Quando un'applicazione chiama il Update metodo DbDataAdapter , 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 DbDataAdapter 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, a causa dell'ordinamento delle righe DataTablein.For example, Update might execute a DELETE statement, followed by an INSERT statement, and then another DELETE statement, due to the ordering of the rows in the DataTable.

Si noti che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente.It should be noted that these statements are not performed as a batch process; each row is updated individually. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione (ad esempio, inserimenti prima degli aggiornamenti).An application can call the GetChanges method in situations where 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. La Update riga viene quindi aggiornata usando il valore UpdatedRowSource della proprietà.The Update then refreshes 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 placed in the DataRow.

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

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

  7. Viene chiamato AcceptChanges.AcceptChanges is called.

Ogni comando associato a DbDataAdapter ha in genere una raccolta di parametri associata.Each command associated with the DbDataAdapter usually has a parameters 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 DbDataAdapter cui si fa riferimento per ottenere i valori dei parametri per la riga corrente.SourceColumn refers to a DataTable column that the DbDataAdapter 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 il risultato di un errore.When the mappings are explicitly set, a missing mapping for an input parameter is usually the result of 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 versione originale, corrente o proposta 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 often 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.

Vedi anche

Update(DataTable)

Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto DataTable specificato.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified DataTable.

public:
 int Update(System::Data::DataTable ^ dataTable);
public int Update (System.Data.DataTable dataTable);
override this.Update : System.Data.DataTable -> int

Parametri

dataTable
DataTable

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

Restituisce

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

Eccezioni

DataSet non è valido.The DataSet is invalid.

Tabella di origine non valida.The source table is invalid.

Non è presente alcuna classe DataRow da aggiornare.No DataRow exists to update.

-oppure--or- Non è presente alcuna classe DataTable da aggiornare.No DataTable exists to update.

In alternativa-or- Non è presente alcun oggetto DataSet da utilizzare come origine.No DataSet exists to use as a source.

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,, per aggiornare l'origine dati.The following example uses the derived class, OleDbDataAdapter, to update the data source.

public DataTable 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();

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

        // code to modify data in DataTable here

        adapter.Update(customers);

        return customers;
    }
}

Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataTable

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataTable()
        adapter.Fill(customers)

        ' Code to modify data in DataTable here 

        adapter.Update(customers)
        Return customers
    End Using
End Function

Commenti

Quando un'applicazione chiama il Update metodo DbDataAdapter , 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 DbDataAdapter 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, a causa dell'ordinamento delle righe DataTablein.For example, Update might execute a DELETE statement, followed by an INSERT statement, and then another DELETE statement, due to the ordering of the rows in the DataTable.

Si noti che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente.It should be noted that these statements are not performed as a batch process; each row is updated individually. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione (ad esempio, inserimenti prima degli aggiornamenti).An application can call the GetChanges method in situations where 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. La Update riga viene quindi aggiornata usando il valore UpdatedRowSource della proprietà.The Update then refreshes 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 placed in the DataRow.

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

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

  7. Viene chiamato AcceptChanges.AcceptChanges is called.

Ogni comando associato a DbDataAdapter ha in genere una raccolta di parametri associata.Each command associated with the DbDataAdapter usually has a parameters 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 DbDataAdapter cui si fa riferimento per ottenere i valori dei parametri per la riga corrente.SourceColumn refers to a DataTable column that the DbDataAdapter 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 il risultato di un errore.When the mappings are explicitly set, a missing mapping for an input parameter is usually the result of 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 versione originale, corrente o proposta 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 often 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.

Vedi anche

Update(DataSet)

Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto DataSet specificato.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified DataSet.

public:
 override int Update(System::Data::DataSet ^ dataSet);
public override int Update (System.Data.DataSet dataSet);
override this.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.

Implementazioni

Eccezioni

Tabella di origine non valida.The source table is invalid.

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,, per aggiornare l'origine dati.The following example uses the derived class, OleDbDataAdapter, to update the data source.

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;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        adapter.Update(customers)

        Return customers
    End Using
End Function

Commenti

Quando un'applicazione chiama il Update metodo DbDataAdapter , 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 DbDataAdapter 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, a causa dell'ordinamento delle righe DataTablein.For example, Update might execute a DELETE statement, followed by an INSERT statement, and then another DELETE statement, due to the ordering of the rows in the DataTable.

Si noti che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente.It should be noted that these statements are not performed as a batch process; each row is updated individually. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione (ad esempio, inserimenti prima degli aggiornamenti).An application can call the GetChanges method in situations where 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. La Update riga viene quindi aggiornata usando il valore UpdatedRowSource della proprietà.The Update then refreshes 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 placed in the DataRow.

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

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

  7. Viene chiamato AcceptChanges.AcceptChanges is called.

Ogni comando associato a DbDataAdapter ha in genere una raccolta di parametri associata.Each command associated with the DbDataAdapter usually has a parameters 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 DbDataAdapter cui si fa riferimento per ottenere i valori dei parametri per la riga corrente.SourceColumn refers to a DataTable column that the DbDataAdapter 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 il risultato di un errore.When the mappings are explicitly set, a missing mapping for an input parameter is usually the result of 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 versione originale, corrente o proposta 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 often 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.

Vedi anche

Update(DataRow[])

Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nella matrice specificata nell'oggetto DataSet.Updates the values in the database by executing the respective INSERT, UPDATE, or DELETE statements for each inserted, updated, or deleted row in the specified array in the DataSet.

public:
 int Update(cli::array <System::Data::DataRow ^> ^ dataRows);
public int Update (System.Data.DataRow[] dataRows);
override this.Update : System.Data.DataRow[] -> int
Public Function Update (dataRows As DataRow()) As Integer

Parametri

dataRows
DataRow[]

Matrice di oggetti DataRow utilizzata per aggiornare l'origine dati.An array of DataRow objects 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

DataSet non è valido.The DataSet is invalid.

Tabella di origine non valida.The source table is invalid.

Non è presente alcuna classe DataRow da aggiornare.No DataRow exists to update.

-oppure--or- Non è presente alcuna classe DataTable da aggiornare.No DataTable exists to update.

In alternativa-or- Non è presente alcun oggetto DataSet da utilizzare come origine.No DataSet exists to use as a source.

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,, per aggiornare l'origine dati.The following example uses the derived class, OleDbDataAdapter, to update the data source.

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

        //Insert new records from DataSet
        DataRow[] rows = customers.Tables[0].Select(
            null, null, DataViewRowState.Added);
        adapter.Update(rows);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        ' Insert new records from DataSet
        Dim rows() As DataRow = customers.Tables(0).Select( _
            Nothing, Nothing, DataViewRowState.Added)
        adapter.Update(rows)

        Return customers
    End Using
End Function

Commenti

Quando un'applicazione chiama il Update metodo DbDataAdapter , 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 DbDataAdapter 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, a causa dell'ordinamento delle righe DataTablein.For example, Update might execute a DELETE statement, followed by an INSERT statement, and then another DELETE statement, due to the ordering of the rows in the DataTable.

Si noti che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente.It should be noted that these statements are not performed as a batch process; each row is updated individually. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione (ad esempio, inserimenti prima degli aggiornamenti).An application can call the GetChanges method in situations where 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. La Update riga viene quindi aggiornata usando il valore UpdatedRowSource della proprietà.The Update then refreshes 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 viene inserito nell'oggetto DataRow.If the command is set to FirstReturnedRecord, the first returned result is placed in the DataRow.

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

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

  7. Viene chiamato AcceptChanges.AcceptChanges is called.

Ogni comando associato a DbDataAdapter ha in genere una raccolta di parametri associata.Each command associated with the DbDataAdapter usually has a parameters 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 DbDataAdapter cui si fa riferimento per ottenere i valori dei parametri per la riga corrente.SourceColumn refers to a DataTable column that the DbDataAdapter 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 il risultato di un errore.When the mappings are explicitly set, a missing mapping for an input parameter is usually the result of 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 versione originale, corrente o proposta 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 often 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.

Vedi anche

Si applica a