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 i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata in DataSet.
Overload
| Nome | Descrizione |
|---|---|
| Update(DataSet, String) |
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata in DataSet con il nome specificato DataTable . |
| Update(DataRow[], DataTableMapping) |
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nella matrice di DataRow oggetti specificata. |
| Update(DataTable) |
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nell'oggetto specificato DataTable. |
| Update(DataSet) |
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nell'oggetto specificato DataSet. |
| Update(DataRow[]) |
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nella matrice specificata in DataSet. |
Update(DataSet, String)
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
public:
int Update(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataSet dataSet, string srcTable);
public int Update(System.Data.DataSet dataSet, string srcTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataSet * string -> int
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 utilizzare per il mapping delle tabelle.
Restituisce
Numero di righe aggiornate correttamente da DataSet.
- Attributi
Eccezioni
L'oggetto DataSet non è valido.
La tabella di origine non è valida.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE ha causato un effetto su zero record.
Esempio
Nell'esempio seguente viene utilizzata la classe derivata , OleDbDataAdapter, per 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 , 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 di 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. Quindi, tutte le istruzioni SQL aggiuntive non impostate vengono 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 DataSet contiene più DataTable oggetti i cui nomi differiscono solo per caso. Quando più tabelle con lo stesso nome, ma maiuscole/minuscole diverse, esistono in un DataSetoggetto , 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 un DataTable nome il cui nome differisce solo per caso, viene DataTable aggiornato. In questo scenario, il confronto non fa 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. 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 e gli 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.
Si chiama AcceptChanges.
A ogni comando associato a in DbDataAdapter 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 |
Usare i nomi delle colonne di origine e i nomi delle DataSet tabelle in se non è presente alcun mapping. |
MissingMappingAction.Ignore |
Viene generato un SystemException oggetto . 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 SystemException oggetto . |
La SourceColumn proprietà viene usata anche per eseguire il mapping del valore per i parametri di output o input/output a DataSet. Se fa riferimento a una colonna inesistente, viene generata un'eccezione.
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 di concorrenza ottimistica.
Annotazioni
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 true prima di chiamare Update. È anche possibile rispondere agli errori per ogni 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à di RowUpdatedEventArgs su Continue.
Vedi anche
Si applica a
Update(DataRow[], DataTableMapping)
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nella matrice di DataRow oggetti specificata.
protected:
virtual int Update(cli::array <System::Data::DataRow ^> ^ dataRows, System::Data::Common::DataTableMapping ^ tableMapping);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
protected virtual int Update(System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping tableMapping);
protected virtual int Update(System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping tableMapping);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataRow[] * System.Data.Common.DataTableMapping -> int
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
Raccolta TableMappings da utilizzare.
Restituisce
Numero di righe aggiornate correttamente dalla matrice di DataRow oggetti .
- Attributi
Eccezioni
L'oggetto DataSet non è valido.
La tabella di origine non è valida.
Non DataRow esiste alcun aggiornamento.
oppure
Non DataTable esiste alcun aggiornamento.
oppure
Non DataSet esiste da usare come origine.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE ha causato un effetto su zero record.
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 di 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. Quindi, tutte le istruzioni SQL aggiuntive non impostate vengono 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. 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 e gli 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.
Si chiama AcceptChanges.
A ogni comando associato a in DbDataAdapter 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 |
Usare i nomi delle colonne di origine e i nomi delle DataSet tabelle in se non è presente alcun mapping. |
MissingMappingAction.Ignore |
Viene generato un SystemException oggetto . 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 SystemException oggetto . |
La SourceColumn proprietà viene usata anche per eseguire il mapping del valore per i parametri di output o input/output a DataSet. Se fa riferimento a una colonna inesistente, viene generata un'eccezione.
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 di concorrenza ottimistica.
Annotazioni
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 true prima di chiamare Update. È anche possibile rispondere agli errori per ogni 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à di RowUpdatedEventArgs su Continue.
Vedi anche
Si applica a
Update(DataTable)
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nell'oggetto specificato DataTable.
public:
int Update(System::Data::DataTable ^ dataTable);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataTable dataTable);
public int Update(System.Data.DataTable dataTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataTable -> int
override this.Update : System.Data.DataTable -> int
Public Function Update (dataTable As DataTable) As Integer
Parametri
Restituisce
Numero di righe aggiornate correttamente da DataTable.
- Attributi
Eccezioni
L'oggetto DataSet non è valido.
La tabella di origine non è valida.
Non DataRow esiste alcun aggiornamento.
oppure
Non DataTable esiste alcun aggiornamento.
oppure
Non DataSet esiste da usare come origine.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE ha causato un effetto su zero record.
Esempio
Nell'esempio seguente viene utilizzata la classe derivata , OleDbDataAdapter, per 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 , 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 di 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. Quindi, tutte le istruzioni SQL aggiuntive non impostate vengono 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. 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 e gli 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.
Si chiama AcceptChanges.
A ogni comando associato a in DbDataAdapter 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 |
Usare i nomi delle colonne di origine e i nomi delle DataSet tabelle in se non è presente alcun mapping. |
MissingMappingAction.Ignore |
Viene generato un SystemException oggetto . 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 SystemException oggetto . |
La SourceColumn proprietà viene usata anche per eseguire il mapping del valore per i parametri di output o input/output a DataSet. Se fa riferimento a una colonna inesistente, viene generata un'eccezione.
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 di concorrenza ottimistica.
Annotazioni
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 true prima di chiamare Update. È anche possibile rispondere agli errori per ogni 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à di RowUpdatedEventArgs su Continue.
Vedi anche
Si applica a
Update(DataSet)
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nell'oggetto specificato DataSet.
public:
override int Update(System::Data::DataSet ^ dataSet);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public override int Update(System.Data.DataSet dataSet);
public override int Update(System.Data.DataSet dataSet);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataSet -> int
override this.Update : System.Data.DataSet -> int
Public Overrides Function Update (dataSet As DataSet) As Integer
Parametri
Restituisce
Numero di righe aggiornate correttamente da DataSet.
Implementazioni
- Attributi
Eccezioni
La tabella di origine non è valida.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE ha causato un effetto su zero 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
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 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 di 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. Quindi, tutte le istruzioni SQL aggiuntive non impostate vengono 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. 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 e gli 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.
Si chiama AcceptChanges.
A ogni comando associato a in DbDataAdapter 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 |
Usare i nomi delle colonne di origine e i nomi delle DataSet tabelle in se non è presente alcun mapping. |
MissingMappingAction.Ignore |
Viene generato un SystemException oggetto . 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 SystemException oggetto . |
La SourceColumn proprietà viene usata anche per eseguire il mapping del valore per i parametri di output o input/output a DataSet. Se fa riferimento a una colonna inesistente, viene generata un'eccezione.
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 di concorrenza ottimistica.
Annotazioni
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 true prima di chiamare Update. È anche possibile rispondere agli errori per ogni 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à di RowUpdatedEventArgs su Continue.
Vedi anche
Si applica a
Update(DataRow[])
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
- Origine:
- DbDataAdapter.cs
Aggiorna i valori nel database eseguendo le rispettive istruzioni INSERT, UPDATE o DELETE per ogni riga inserita, aggiornata o eliminata nella matrice specificata in DataSet.
public:
int Update(cli::array <System::Data::DataRow ^> ^ dataRows);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public int Update(System.Data.DataRow[] dataRows);
public int Update(System.Data.DataRow[] dataRows);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.Update : System.Data.DataRow[] -> int
override this.Update : System.Data.DataRow[] -> int
Public Function Update (dataRows As DataRow()) As Integer
Parametri
Restituisce
Numero di righe aggiornate correttamente da DataSet.
- Attributi
Eccezioni
L'oggetto DataSet non è valido.
La tabella di origine non è valida.
Non DataRow esiste alcun aggiornamento.
oppure
Non DataTable esiste alcun aggiornamento.
oppure
Non DataSet esiste da usare come origine.
Un tentativo di esecuzione di un'istruzione INSERT, UPDATE o DELETE ha causato un effetto su zero 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 di 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. Quindi, tutte le istruzioni SQL aggiuntive non impostate vengono 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. 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 e gli 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.
Si chiama AcceptChanges.
A ogni comando associato a in DbDataAdapter 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 |
Usare i nomi delle colonne di origine e i nomi delle DataSet tabelle in se non è presente alcun mapping. |
MissingMappingAction.Ignore |
Viene generato un SystemException oggetto . 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 SystemException oggetto . |
La SourceColumn proprietà viene usata anche per eseguire il mapping del valore per i parametri di output o input/output a DataSet. Se fa riferimento a una colonna inesistente, viene generata un'eccezione.
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 di concorrenza ottimistica.
Annotazioni
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 true prima di chiamare Update. È anche possibile rispondere agli errori per ogni 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à di RowUpdatedEventArgs su Continue.