Condividi tramite


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.

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

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.

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

dataSet
DataSet

L'oggetto DataSet da utilizzare per aggiornare l'origine dati.

srcTable
String

Nome della tabella di origine da usare per il mapping di tabelle.

Restituisce

Numero di righe aggiornate correttamente dall'oggetto DataSet.

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, 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 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 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:

  1. I valori nell'oggetto DataRow vengono spostati nei valori dei parametri.

  2. Viene generato l'evento OnRowUpdating.

  3. Il comando viene eseguito.

  4. Se il comando è impostato su FirstReturnedRecord, il primo risultato restituito viene inserito nell'oggetto DataRow.

  5. Se sono presenti parametri di output, vengono inseriti in DataRow.

  6. Viene generato l'evento OnRowUpdated.

  7. 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

dataRows
DataRow[]

Matrice di oggetti DataRow utilizzata per aggiornare l'origine dati.

tableMapping
DataTableMapping

Insieme TableMappings da utilizzare.

Restituisce

Numero di righe aggiornate correttamente dalla matrice di DataRow oggetti.

Eccezioni

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:

  1. I valori nell'oggetto DataRow vengono spostati nei valori dei parametri.

  2. Viene generato l'evento OnRowUpdating.

  3. Il comando viene eseguito.

  4. Se il comando è impostato su FirstReturnedRecord, il primo risultato restituito viene inserito nell'oggetto DataRow.

  5. Se sono presenti parametri di output, vengono inseriti in DataRow.

  6. Viene generato l'evento OnRowUpdated.

  7. 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

dataTable
DataTable

L'oggetto DataTable utilizzato per aggiornare l'origine dati.

Restituisce

Numero di righe aggiornate correttamente dall'oggetto DataTable.

Eccezioni

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:

  1. I valori nell'oggetto DataRow vengono spostati nei valori dei parametri.

  2. Viene generato l'evento OnRowUpdating.

  3. Il comando viene eseguito.

  4. Se il comando è impostato su FirstReturnedRecord, il primo risultato restituito viene inserito nell'oggetto DataRow.

  5. Se sono presenti parametri di output, vengono inseriti in DataRow.

  6. Viene generato l'evento OnRowUpdated.

  7. 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

dataSet
DataSet

L'oggetto DataSet utilizzato per aggiornare l'origine dati.

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:

  1. I valori in DataRow vengono spostati nei valori dei parametri.

  2. Viene generato l'evento OnRowUpdating.

  3. Il comando viene eseguito.

  4. Se il comando è impostato su FirstReturnedRecord, il primo risultato restituito viene inserito in DataRow.

  5. Se sono presenti parametri di output, vengono inseriti in DataRow.

  6. Viene generato l'evento OnRowUpdated.

  7. 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

dataRows
DataRow[]

Matrice di oggetti DataRow utilizzata per aggiornare l'origine dati.

Restituisce

Numero di righe aggiornate correttamente dall'oggetto DataSet.

Eccezioni

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:

  1. I valori in DataRow vengono spostati nei valori dei parametri.

  2. Viene generato l'evento OnRowUpdating.

  3. Il comando viene eseguito.

  4. Se il comando è impostato su FirstReturnedRecord, il primo risultato restituito viene inserito in DataRow.

  5. Se sono presenti parametri di output, vengono inseriti in DataRow.

  6. Viene generato l'evento OnRowUpdated.

  7. 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