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)

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

Int32

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 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 metodo , esamina la proprietà ed esegue le istruzioni INSERT, UPDATE o DELETE necessarie in modo Update DbDataAdapter RowState iterativo per ogni riga, in base all'ordine degli indici configurati in DataSet . Ad esempio, potrebbe eseguire un'istruzione DELETE, seguita da un'istruzione INSERT e quindi da un'altra istruzione DELETE, a causa dell'ordinamento delle Update righe in DataTable .

Si noti che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione , ad esempio GetChanges INSERT prima di UPDATE. Per altre informazioni, vedere Aggiornamento di origini dati con DataAdapter.

Se non sono state specificate istruzioni INSERT, UPDATE o DELETE, il Update metodo genera un'eccezione. Tuttavia, è possibile creare un oggetto o per generare automaticamente istruzioni SQL per gli aggiornamenti a tabella singola se si imposta la proprietà di un provider .NET Framework SqlCommandBuilder OleDbCommandBuilder SelectCommand dati. Quindi, eventuali 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 contiene più oggetti i cui nomi DataSet DataTable differiscono solo in base alla distinzione tra maiuscole e minuscole. Quando in un oggetto esistono più tabelle con lo stesso nome, ma con maiuscole e minuscole diverse, esegue un confronto con distinzione tra maiuscole e minuscole per trovare la tabella corrispondente e genera un'eccezione se non esiste alcuna DataSet Update 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 viene chiamato e l'oggetto contiene solo uno il cui nome è diverso solo in base alla distinzione tra maiuscole Update DataSet e DataTable DataTable minuscole, viene 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 elencata nel primo mapping prima di eseguire un aggiornamento. Aggiorna Update quindi la riga usando il valore della proprietà UpdatedRowSource . Eventuali righe aggiuntive restituite vengono ignorate.

Dopo il caricamento dei dati in , viene generato l'evento , consentendo all'utente di esaminare la riga riconciliata e gli eventuali parametri di DataSet OnRowUpdated output DataSet restituiti dal comando. Dopo l'aggiornamento corretto di una riga, le modifiche a tale riga vengono accettate.

Quando si Update usa , l'ordine di esecuzione è il seguente:

  1. I valori in vengono DataRow 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 proprietà SourceColumn e di .NET Framework classe del provider di SourceVersion Parameter dati. SourceColumn fa riferimento a DataTable una colonna a cui fa riferimento per ottenere i valori dei parametri per la riga DbDataAdapter corrente.

SourceColumn fa riferimento al nome della colonna non mappata prima che siano stati applicati i mapping di tabella. Se SourceColumn fa riferimento a una colonna inesistente, l'azione eseguita dipende da uno dei valori MissingMappingAction seguenti.

Valore di enumerazione Azione intrapresa
MissingMappingAction.Passthrough Usare i nomi delle colonne di origine e i nomi di tabella in DataSet se non è presente alcun mapping.
MissingMappingAction.Ignore Viene SystemException generato un 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 SystemException generato un oggetto .

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 proprietà di un .NET Framework classe del provider di dati determina se usare la versione Original, Current o SourceVersion Proposed del valore della Parameter 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 non viene più eseguita. Per continuare l'operazione di aggiornamento senza generare eccezioni quando viene rilevato un errore, impostare la ContinueUpdateOnError proprietà su prima di chiamare true Update . È anche possibile rispondere agli errori per ogni riga all'interno RowUpdated dell'evento di un oggetto DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated , impostare la proprietà di su Status RowUpdatedEventArgs Continue .

Vedi anche

Si applica a

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.

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

Int32

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 metodo , esamina la proprietà ed esegue le istruzioni INSERT, UPDATE o DELETE necessarie in modo Update DbDataAdapter RowState iterativo per ogni riga, in base all'ordine degli indici configurati in DataSet . Ad esempio, potrebbe eseguire un'istruzione DELETE, seguita da un'istruzione INSERT e quindi da un'altra istruzione DELETE, a causa dell'ordinamento delle Update righe in DataTable .

Si noti che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione, ad esempio GetChanges INSERTs prima di UPDATEs. Per altre informazioni, vedere Aggiornamento di origini dati con DataAdapter.

Se non sono state specificate istruzioni INSERT, UPDATE o DELETE, il Update metodo genera un'eccezione. Tuttavia, è possibile creare un oggetto o per generare automaticamente istruzioni SQL per gli aggiornamenti a tabella singola se si imposta la proprietà di un provider .NET Framework SqlCommandBuilder OleDbCommandBuilder SelectCommand dati. Quindi, eventuali 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 elencata nel primo mapping prima di eseguire un aggiornamento. Aggiorna Update quindi la riga usando il valore della proprietà UpdatedRowSource . Eventuali righe aggiuntive restituite vengono ignorate.

Dopo il caricamento dei dati in , viene generato l'evento , consentendo all'utente di esaminare la riga riconciliata e gli eventuali parametri di DataSet OnRowUpdated output DataSet restituiti dal comando. Dopo l'aggiornamento corretto di una riga, le modifiche a tale riga vengono accettate.

Quando si Update usa , l'ordine di esecuzione è il seguente:

  1. I valori in vengono DataRow 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 proprietà SourceColumn e di .NET Framework classe del provider di SourceVersion Parameter dati. SourceColumn fa riferimento a DataTable una colonna a cui fa riferimento per ottenere i valori dei parametri per la riga DbDataAdapter corrente.

SourceColumn fa riferimento al nome della colonna non mappata prima che siano stati applicati i mapping di tabella. Se SourceColumn fa riferimento a una colonna inesistente, l'azione eseguita dipende da uno dei valori MissingMappingAction seguenti.

Valore di enumerazione Azione intrapresa
MissingMappingAction.Passthrough Usare i nomi delle colonne di origine e i nomi di tabella in DataSet se non è presente alcun mapping.
MissingMappingAction.Ignore Viene SystemException generato un 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 SystemException generato un oggetto .

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 proprietà di un .NET Framework classe del provider di dati determina se usare la versione Original, Current o SourceVersion Proposed del valore della Parameter 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 non viene più eseguita. Per continuare l'operazione di aggiornamento senza generare eccezioni quando viene rilevato un errore, impostare la ContinueUpdateOnError proprietà su prima di chiamare true Update . È anche possibile rispondere agli errori per ogni riga all'interno RowUpdated dell'evento di un oggetto DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated , impostare la proprietà di su Status RowUpdatedEventArgs Continue .

Vedi anche

Si applica a

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.

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

Int32

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 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 metodo , esamina la proprietà ed esegue le istruzioni INSERT, UPDATE o DELETE necessarie in modo iterativo per ogni riga, in base all'ordine degli indici configurati Update DbDataAdapter in RowState DataSet . Ad esempio, potrebbe eseguire un'istruzione DELETE, seguita da un'istruzione INSERT e quindi da un'altra istruzione DELETE, a causa dell'ordinamento Update 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 metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione ( ad esempio, ISTRUZIONI INSERT GetChanges prima degli UPDATE). Per altre informazioni, vedere Aggiornamento di origini dati con DataAdapter.

Se le istruzioni INSERT, UPDATE o DELETE non sono state specificate, il Update metodo genera un'eccezione. Tuttavia, è possibile creare un oggetto o per generare automaticamente istruzioni SQL per gli aggiornamenti a tabella singola se si imposta la proprietà di un SqlCommandBuilder OleDbCommandBuilder provider .NET Framework SelectCommand dati. Eventuali istruzioni SQL aggiuntive non impostate vengono quindi generate da CommandBuilder. Questa logica di generazione richiede che le informazioni sulla colonna chiave siano presenti in DataSet . Per altre informazioni, vedere Generazione di comandi con CommandBuilders.

Il Update metodo recupera le righe dalla tabella elencata nel primo mapping prima di eseguire un aggiornamento. aggiorna Update quindi la riga utilizzando il valore della proprietà UpdatedRowSource . Eventuali righe aggiuntive restituite vengono ignorate.

Dopo che i dati sono stati ricaricati in , viene generato l'evento , consentendo all'utente di esaminare la riga riconciliata e gli eventuali parametri di DataSet OnRowUpdated output DataSet restituiti dal comando. Dopo l'aggiornamento corretto di una riga, le modifiche apportate a tale riga vengono accettate.

Quando si Update usa , 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 proprietà e di SourceColumn .NET Framework classe del provider di SourceVersion Parameter dati. SourceColumn fa riferimento a una DataTable colonna a cui fa riferimento per ottenere i valori dei parametri per la riga DbDataAdapter corrente.

SourceColumn fa riferimento al nome di colonna non mappato prima dell'applicazione di qualsiasi mapping di tabella. Se SourceColumn fa riferimento a una colonna inesistente, l'azione eseguita dipende da uno dei valori MissingMappingAction seguenti.

Valore di enumerazione Azione intrapresa
MissingMappingAction.Passthrough Utilizzare i nomi delle colonne di origine e i nomi di tabella in DataSet se non è presente alcun mapping.
MissingMappingAction.Ignore Viene SystemException generato un 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 SystemException generato un oggetto .

La proprietà viene usata anche per eseguire il mapping del valore per i parametri di SourceColumn output o di input/output a DataSet . Se fa riferimento a una colonna inesistente, viene generata un'eccezione.

La proprietà di un .NET Framework classe del provider di dati determina se usare la versione Original, Current o SourceVersion Proposed del valore della Parameter 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 non viene più eseguita. Per continuare l'operazione di aggiornamento senza generare eccezioni quando viene rilevato un errore, impostare la ContinueUpdateOnError proprietà su prima di chiamare true Update . È anche possibile rispondere agli errori per ogni riga all'interno RowUpdated dell'evento di un oggetto DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated , impostare la proprietà di su Status RowUpdatedEventArgs Continue .

Vedi anche

Si applica a

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.

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

Int32

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 utilizzata la classe OleDbDataAdapter derivata, , 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 metodo , esamina la proprietà ed esegue le istruzioni INSERT, UPDATE o DELETE necessarie in modo iterativo per ogni riga, in base all'ordine degli indici configurati Update DbDataAdapter in RowState DataSet . Ad esempio, potrebbe eseguire un'istruzione DELETE, seguita da un'istruzione INSERT e quindi da un'altra istruzione DELETE, a causa dell'ordinamento Update 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 metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione ( ad esempio, ISTRUZIONI INSERT GetChanges prima degli UPDATE). Per altre informazioni, vedere Aggiornamento di origini dati con DataAdapter.

Se le istruzioni INSERT, UPDATE o DELETE non sono state specificate, il Update metodo genera un'eccezione. Tuttavia, è possibile creare un oggetto o per generare automaticamente istruzioni SQL per gli aggiornamenti a tabella singola se si imposta la proprietà di un SqlCommandBuilder OleDbCommandBuilder provider .NET Framework SelectCommand dati. Eventuali istruzioni SQL aggiuntive non impostate vengono quindi generate da CommandBuilder. Questa logica di generazione richiede che le informazioni sulla colonna chiave siano presenti in DataSet . Per altre informazioni, vedere Generazione di comandi con CommandBuilders.

Il Update metodo recupera le righe dalla tabella elencata nel primo mapping prima di eseguire un aggiornamento. aggiorna Update quindi la riga utilizzando il valore della proprietà UpdatedRowSource . Eventuali righe aggiuntive restituite vengono ignorate.

Dopo che i dati sono stati ricaricati in , viene generato l'evento , consentendo all'utente di esaminare la riga riconciliata e gli eventuali parametri di DataSet OnRowUpdated output DataSet restituiti dal comando. Dopo l'aggiornamento corretto di una riga, le modifiche apportate a tale riga vengono accettate.

Quando si Update usa , 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 proprietà e di SourceColumn .NET Framework classe del provider di SourceVersion Parameter dati. SourceColumn fa riferimento a una DataTable colonna a cui fa riferimento per ottenere i valori dei parametri per la riga DbDataAdapter corrente.

SourceColumn fa riferimento al nome di colonna non mappato prima dell'applicazione di qualsiasi mapping di tabella. Se SourceColumn fa riferimento a una colonna inesistente, l'azione eseguita dipende da uno dei valori MissingMappingAction seguenti.

Valore di enumerazione Azione intrapresa
MissingMappingAction.Passthrough Utilizzare i nomi delle colonne di origine e i nomi di tabella in DataSet se non è presente alcun mapping.
MissingMappingAction.Ignore Viene SystemException generato un 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 SystemException generato un oggetto .

La proprietà viene usata anche per eseguire il mapping del valore per i parametri di SourceColumn output o di input/output a DataSet . Se fa riferimento a una colonna inesistente, viene generata un'eccezione.

La proprietà di un .NET Framework classe del provider di dati determina se usare la versione originale, corrente o proposta SourceVersion Parameter 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 non viene più eseguita. Per continuare l'operazione di aggiornamento senza generare eccezioni quando viene rilevato un errore, impostare la ContinueUpdateOnError proprietà su prima di chiamare true Update . È anche possibile rispondere agli errori per ogni riga all'interno RowUpdated dell'evento di un Oggetto DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated , impostare la proprietà di su Status RowUpdatedEventArgs Continue .

Vedi anche

Si applica a

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.

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

Int32

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 metodo , esamina la proprietà ed esegue le istruzioni INSERT, UPDATE o DELETE necessarie in modo Update DbDataAdapter RowState iterativo per ogni riga, in base all'ordine degli indici configurati in DataSet . Ad esempio, potrebbe eseguire un'istruzione DELETE, seguita da un'istruzione INSERT e quindi da un'altra istruzione DELETE, a causa dell'ordinamento delle Update righe in DataTable .

Si noti che queste istruzioni non vengono eseguite come processo batch. ogni riga viene aggiornata singolarmente. Un'applicazione può chiamare il metodo in situazioni in cui è necessario controllare la sequenza di tipi di istruzione, ad esempio GetChanges INSERTs prima di UPDATEs. Per altre informazioni, vedere Aggiornamento di origini dati con DataAdapter.

Se non sono state specificate istruzioni INSERT, UPDATE o DELETE, il Update metodo genera un'eccezione. Tuttavia, è possibile creare un oggetto o per generare automaticamente istruzioni SQL per gli aggiornamenti a tabella singola se si imposta la proprietà di un provider .NET Framework SqlCommandBuilder OleDbCommandBuilder SelectCommand dati. 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 elencata nel primo mapping prima di eseguire un aggiornamento. Aggiorna Update quindi la riga usando il valore della proprietà UpdatedRowSource . Eventuali righe aggiuntive restituite vengono ignorate.

Dopo il caricamento dei dati in , viene generato l'evento , consentendo all'utente di esaminare la riga riconciliata e gli eventuali parametri di DataSet OnRowUpdated output DataSet restituiti dal comando. Dopo l'aggiornamento corretto di una riga, le modifiche a tale riga vengono accettate.

Quando si Update usa , l'ordine di esecuzione è il seguente:

  1. I valori in vengono DataRow 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 proprietà SourceColumn e di .NET Framework classe del provider di SourceVersion Parameter dati. SourceColumn fa riferimento a DataTable una colonna a cui fa riferimento per ottenere i valori dei parametri per la riga DbDataAdapter corrente.

SourceColumn fa riferimento al nome della colonna non mappata prima che siano stati applicati i mapping di tabella. Se SourceColumn fa riferimento a una colonna inesistente, l'azione eseguita dipende da uno dei valori MissingMappingAction seguenti.

Valore di enumerazione Azione intrapresa
MissingMappingAction.Passthrough Usare i nomi delle colonne di origine e i nomi di tabella in DataSet se non è presente alcun mapping.
MissingMappingAction.Ignore Viene SystemException generato un 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 SystemException generato un oggetto .

La proprietà viene usata anche per eseguire il mapping del valore per i parametri SourceColumn di output o input/output a DataSet . Viene generata un'eccezione se fa riferimento a una colonna inesistente.

La proprietà di un .NET Framework classe del provider di dati determina se usare la versione Original, Current o SourceVersion Proposed del valore della Parameter 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 non viene più eseguita. Per continuare l'operazione di aggiornamento senza generare eccezioni quando viene rilevato un errore, impostare la ContinueUpdateOnError proprietà su prima di chiamare true Update . È anche possibile rispondere agli errori per ogni riga all'interno RowUpdated dell'evento di un oggetto DataAdapter. Per continuare l'operazione di aggiornamento senza generare un'eccezione all'interno dell'evento RowUpdated , impostare la proprietà di su Status RowUpdatedEventArgs Continue .

Vedi anche

Si applica a