DbDataAdapter.Update 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.
Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto 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. |
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 DataRow. |
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. |
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. |
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. |
Update(DataSet, String)
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
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
Public Function Update (dataSet As DataSet, srcTable As String) As Integer
Parametri
- srcTable
- String
Nome della tabella di origine da usare per il mapping di tabelle.
Restituisce
Numero di righe aggiornate correttamente dall'oggetto DataSet.
Eccezioni
DataSet non è valido.
Tabella di origine non valida.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE non ha avuto effetto su alcun record.
Esempio
Nell'esempio seguente viene usata la classe derivata, , OleDbDataAdapterper aggiornare l'origine dati.
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, l'oggetto DbDataAdapter 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.
Si noti che queste istruzioni non vengono eseguite come processo batch; ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione, ad esempio INSERT prima di UPDATE. Per altre informazioni, vedere Aggiornamento delle origini dati con DataAdapters.
Se le istruzioni INSERT, UPDATE o DELETE non sono state specificate, 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. Le istruzioni SQL aggiuntive che non vengono 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 supporta scenari in cui l'oggetto DataSet contiene più DataTable oggetti i cui nomi differiscono solo in base al caso. Quando più tabelle con lo stesso nome, ma maiuscole e minuscole diverse, esistono in un DataSet
oggetto , Update esegue un confronto con distinzione tra maiuscole e minuscole per trovare la tabella corrispondente e genera un'eccezione se non esiste alcuna corrispondenza esatta. Il codice C# seguente illustra questo comportamento.
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 l'oggetto DataSet contiene solo uno DataTable il cui nome differisce solo in base al caso, che DataTable viene aggiornato. In questo scenario il confronto è senza distinzione tra maiuscole e minuscole. Il codice C# seguente illustra questo comportamento.
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 elencate nel primo mapping prima di eseguire un aggiornamento. Aggiorna Update quindi la riga usando il valore della UpdatedRowSource proprietà. Tutte le righe aggiuntive restituite vengono ignorate.
Dopo che tutti i dati vengono caricati nell'oggetto DataSet, l'evento OnRowUpdated viene generato, consentendo all'utente di esaminare la riga riconciliata DataSet e i parametri di output restituiti dal comando. Dopo l'aggiornamento di una riga, le modifiche apportate a tale riga vengono accettate.
Quando si usa Update, l'ordine di esecuzione è il seguente:
I valori nell'oggetto 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 nell'oggetto DataRow.Se sono presenti parametri di output, vengono inseriti in DataRow.
Viene generato l'evento OnRowUpdated.
Chiamata del metodo AcceptChanges.
Ogni comando associato all'oggetto DbDataAdapter ha in genere una raccolta di parametri associata. I parametri vengono mappati alla riga corrente tramite le SourceColumn
proprietà e SourceVersion
di una classe di Parameter
dati di .NET Framework. SourceColumn
fa riferimento a una DataTable colonna a cui fa DbDataAdapter riferimento per ottenere i valori dei parametri per la riga corrente.
SourceColumn
fa riferimento al nome di colonna non mappato prima che siano stati applicati mapping di tabelle. Se SourceColumn
si riferisce a una colonna inesistente, l'azione eseguita dipende da uno dei valori seguenti MissingMappingAction .
Valore di enumerazione | Azione intrapresa |
---|---|
MissingMappingAction.Passthrough |
Usare i nomi di colonna di origine e i nomi di tabella nel DataSet caso in cui non sia 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 il risultato di 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 di input/output all'oggetto DataSet
. Un'eccezione viene generata se fa riferimento a una colonna inesistente.
La SourceVersion
proprietà di una classe di Parameter
dati di .NET Framework determina se usare la versione Originale, Current o Proposta del valore della colonna. Questa funzionalità viene spesso usata per includere valori originali nella clausola WHERE di un'istruzione UPDATE per verificare le violazioni di concorrenza ottimistiche.
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 viene rilevato un errore, impostare la ContinueUpdateOnError proprietà su prima true
di chiamare Update. È anche possibile rispondere agli errori in base a riga all'interno dell'evento RowUpdated
di un DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated
, impostare la Status proprietà dell'oggetto RowUpdatedEventArgs su Continue.
Vedi anche
Si applica a
Update(DataRow[], DataTableMapping)
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
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 DataRow.
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
- tableMapping
- DataTableMapping
Insieme TableMappings da utilizzare.
Restituisce
Numero di righe aggiornate correttamente dalla matrice di DataRow oggetti.
Eccezioni
DataSet non è valido.
Tabella di origine non valida.
Non è presente alcuna classe DataRow da aggiornare.
-oppure-
Non è presente alcuna classe DataTable da aggiornare.
-oppure-
Non è presente alcun oggetto DataSet da utilizzare come origine.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE non ha avuto effetto su alcun record.
Commenti
Quando un'applicazione chiama il Update metodo, l'oggetto DbDataAdapter 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.
Si noti che queste istruzioni non vengono eseguite come processo batch; ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione, ad esempio INSERTs prima degli UPDATEs. Per altre informazioni, vedere Aggiornamento delle origini dati con DataAdapters.
Se le istruzioni INSERT, UPDATE o DELETE non sono state specificate, 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. Le istruzioni SQL aggiuntive che non vengono 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 elencate nel primo mapping prima di eseguire un aggiornamento. Aggiorna Update quindi la riga usando il valore della UpdatedRowSource proprietà. Tutte le righe aggiuntive restituite vengono ignorate.
Dopo che tutti i dati vengono caricati nell'oggetto DataSet, l'evento OnRowUpdated viene generato, consentendo all'utente di esaminare la riga riconciliata DataSet e i parametri di output restituiti dal comando. Dopo l'aggiornamento di una riga, le modifiche apportate a tale riga vengono accettate.
Quando si usa Update, l'ordine di esecuzione è il seguente:
I valori nell'oggetto 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 nell'oggetto DataRow.Se sono presenti parametri di output, vengono inseriti in DataRow.
Viene generato l'evento OnRowUpdated.
Chiamata del metodo AcceptChanges.
Ogni comando associato all'oggetto DbDataAdapter ha in genere una raccolta di parametri associata. I parametri vengono mappati alla riga corrente tramite le SourceColumn
proprietà e SourceVersion
di una classe di Parameter
dati di .NET Framework. SourceColumn
fa riferimento a una DataTable colonna a cui fa DbDataAdapter riferimento per ottenere i valori dei parametri per la riga corrente.
SourceColumn
fa riferimento al nome di colonna non mappato prima che siano stati applicati mapping di tabelle. Se SourceColumn
si riferisce a una colonna inesistente, l'azione eseguita dipende da uno dei valori seguenti MissingMappingAction .
Valore di enumerazione | Azione intrapresa |
---|---|
MissingMappingAction.Passthrough |
Usare i nomi di colonna di origine e i nomi di tabella nel DataSet caso in cui non sia 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 il risultato di 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 di input/output all'oggetto DataSet
. Un'eccezione viene generata se fa riferimento a una colonna inesistente.
La SourceVersion
proprietà di una classe di Parameter
dati di .NET Framework determina se usare la versione Originale, Current o Proposta del valore della colonna. Questa funzionalità viene spesso usata per includere valori originali nella clausola WHERE di un'istruzione UPDATE per verificare le violazioni di concorrenza ottimistiche.
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 viene rilevato un errore, impostare la ContinueUpdateOnError proprietà su prima true
di chiamare Update. È anche possibile rispondere agli errori in base a riga all'interno dell'evento RowUpdated
di un DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated
, impostare la Status proprietà dell'oggetto RowUpdatedEventArgs su Continue.
Vedi anche
Si applica a
Update(DataTable)
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto DataTable specificato.
public:
int Update(System::Data::DataTable ^ dataTable);
public int Update (System.Data.DataTable dataTable);
override this.Update : System.Data.DataTable -> int
Public Function Update (dataTable As DataTable) As Integer
Parametri
Restituisce
Numero di righe aggiornate correttamente dall'oggetto DataTable.
Eccezioni
DataSet non è valido.
Tabella di origine non valida.
Non è presente alcuna classe DataRow da aggiornare.
-oppure-
Non è presente alcuna classe DataTable da aggiornare.
-oppure-
Non è presente alcun oggetto DataSet da utilizzare come origine.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE non ha avuto effetto su alcun record.
Esempio
Nell'esempio seguente viene usata la classe derivata, , OleDbDataAdapterper aggiornare l'origine dati.
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, l'oggetto DbDataAdapter 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.
Si noti che queste istruzioni non vengono eseguite come processo batch; ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione, ad esempio INSERTs prima degli UPDATEs. Per altre informazioni, vedere Aggiornamento delle origini dati con DataAdapters.
Se le istruzioni INSERT, UPDATE o DELETE non sono state specificate, 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. Le istruzioni SQL aggiuntive che non vengono 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 elencate nel primo mapping prima di eseguire un aggiornamento. Aggiorna Update quindi la riga usando il valore della UpdatedRowSource proprietà. Tutte le righe aggiuntive restituite vengono ignorate.
Dopo che tutti i dati vengono caricati nell'oggetto DataSet, l'evento OnRowUpdated viene generato, consentendo all'utente di esaminare la riga riconciliata DataSet e i parametri di output restituiti dal comando. Dopo l'aggiornamento di una riga, le modifiche apportate a tale riga vengono accettate.
Quando si usa Update, l'ordine di esecuzione è il seguente:
I valori nell'oggetto 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 nell'oggetto DataRow.Se sono presenti parametri di output, vengono inseriti in DataRow.
Viene generato l'evento OnRowUpdated.
Chiamata del metodo AcceptChanges.
Ogni comando associato all'oggetto DbDataAdapter ha in genere una raccolta di parametri associata. I parametri vengono mappati alla riga corrente tramite le SourceColumn
proprietà e SourceVersion
di una classe di Parameter
dati di .NET Framework. SourceColumn
fa riferimento a una DataTable colonna a cui fa DbDataAdapter riferimento per ottenere i valori dei parametri per la riga corrente.
SourceColumn
fa riferimento al nome di colonna non mappato prima che siano stati applicati mapping di tabelle. Se SourceColumn
si riferisce a una colonna inesistente, l'azione eseguita dipende da uno dei valori seguenti MissingMappingAction .
Valore di enumerazione | Azione intrapresa |
---|---|
MissingMappingAction.Passthrough |
Usare i nomi di colonna di origine e i nomi di tabella nel DataSet caso in cui non sia 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 il risultato di 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 di input/output all'oggetto DataSet
. Un'eccezione viene generata se fa riferimento a una colonna inesistente.
La SourceVersion
proprietà di una classe di Parameter
dati di .NET Framework determina se usare la versione Originale, Current o Proposta del valore della colonna. Questa funzionalità viene spesso usata per includere valori originali nella clausola WHERE di un'istruzione UPDATE per verificare le violazioni di concorrenza ottimistiche.
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 viene rilevato un errore, impostare la ContinueUpdateOnError proprietà su prima true
di chiamare Update. È anche possibile rispondere agli errori in base a riga all'interno dell'evento RowUpdated
di un DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated
, impostare la Status proprietà dell'oggetto RowUpdatedEventArgs su Continue.
Vedi anche
Si applica a
Update(DataSet)
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
Aggiorna il valore nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ciascuna riga inserita, aggiornata o eliminata nell'oggetto DataSet specificato.
public:
override int Update(System::Data::DataSet ^ dataSet);
public override int Update (System.Data.DataSet dataSet);
override this.Update : System.Data.DataSet -> int
Public Overrides Function Update (dataSet As DataSet) As Integer
Parametri
Restituisce
Numero di righe aggiornate correttamente dall'oggetto DataSet.
Implementazioni
Eccezioni
Tabella di origine non valida.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE non ha avuto effetto su alcun record.
Esempio
Nell'esempio seguente viene usata la classe derivata, , OleDbDataAdapterper 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;
}
}
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, l'oggetto DbDataAdapter 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.
Si noti che queste istruzioni non vengono eseguite come processo batch; ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione, ad esempio INSERTs prima degli UPDATEs. Per altre informazioni, vedere Aggiornamento delle origini dati con DataAdapters.
Se le istruzioni INSERT, UPDATE o DELETE non sono state specificate, 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. Quindi Update aggiorna 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.
Chiamata del metodo AcceptChanges.
A ogni comando associato a è DbDataAdapter in 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 DbDataAdapter 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 il risultato di 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 utilizzare la versione Originale, Corrente o Proposta 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.
Vedi anche
Si applica a
Update(DataRow[])
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
- Source:
- DbDataAdapter.cs
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.
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
Restituisce
Numero di righe aggiornate correttamente dall'oggetto DataSet.
Eccezioni
DataSet non è valido.
Tabella di origine non valida.
Non è presente alcuna classe DataRow da aggiornare.
-oppure-
Non è presente alcuna classe DataTable da aggiornare.
-oppure-
Non è presente alcun oggetto DataSet da utilizzare come origine.
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, 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
//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 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.
Si noti che queste istruzioni non vengono eseguite come processo batch; ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il GetChanges metodo in situazioni in cui è 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. Quindi Update aggiorna 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.
Chiamata del metodo AcceptChanges.
A ogni comando associato a è DbDataAdapter in 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 DbDataAdapter 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 il risultato di 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 utilizzare la versione Originale, Corrente o Proposta 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.