IDataAdapter.Update(DataSet) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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:
I valori in DataRow vengono spostati nei valori dei parametri.
Viene generato l'evento OnRowUpdating.
Il comando viene eseguito.
Se il comando è impostato su
FirstReturnedRecord
, il primo risultato restituito viene inserito in DataRow.Se sono presenti parametri di output, vengono inseriti in DataRow.
Viene generato l'evento OnRowUpdated.
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 Original
versione , Current
o 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.