DataAdapter.Update(DataSet) Methode

Definitie

Roept de betreffende INSERT-, UPDATE- of DELETE-instructies aan voor elke ingevoegde, bijgewerkte of verwijderde rij in de opgegeven DataSet uit een DataTable benoemde tabel.

public:
 abstract int Update(System::Data::DataSet ^ dataSet);
public:
 virtual int Update(System::Data::DataSet ^ dataSet);
public abstract int Update(System.Data.DataSet dataSet);
public virtual int Update(System.Data.DataSet dataSet);
abstract member Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
override this.Update : System.Data.DataSet -> int
Public MustOverride Function Update (dataSet As DataSet) As Integer
Public Overridable Function Update (dataSet As DataSet) As Integer

Parameters

dataSet
DataSet

De DataSet gegevensbron die wordt gebruikt voor het bijwerken van de gegevensbron.

Retouren

Het aantal rijen dat is bijgewerkt vanuit de DataSet.

Implementeringen

Uitzonderingen

De brontabel is ongeldig.

Bij een poging om een INSERT-, UPDATE- of DELETE-instructie uit te voeren, zijn er geen records betrokken.

Voorbeelden

In het volgende voorbeeld wordt de afgeleide klasse gebruikt Update voor OleDbDataAdapterde gegevensbron.

static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        connection.Open();
        OleDbDataAdapter adapter =
            new OleDbDataAdapter();
        adapter.SelectCommand =
            new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder =
            new OleDbCommandBuilder(adapter);

        adapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        // Without the OleDbCommandBuilder, this line would fail.
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.Update(dataSet);
    }
    return dataSet;
}
Public Function CreateCommandAndUpdate( _
    ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Dim dataSet As New DataSet()

    Using connection As New OleDbConnection(connectionString)
        connection.Open()
        Dim adapter As New OleDbDataAdapter()

        adapter.SelectCommand = New OleDbCommand( _
            queryString, connection)

        Dim builder As OleDbCommandBuilder = _
            New OleDbCommandBuilder(adapter)

        adapter.Fill(dataSet)

        ' Code to modify the data in the DataSet here. 

        ' Without the OleDbCommandBuilder this line would fail.
        builder.GetUpdateCommand()
        adapter.Update(dataSet)
    End Using
    Return dataSet
End Function

Opmerkingen

De update wordt per rij uitgevoerd. Voor elke ingevoegde, gewijzigde en verwijderde rij bepaalt de Update methode het type wijziging dat erop is uitgevoerd (Invoegen, Bijwerken of Verwijderen). Afhankelijk van het type wijziging wordt de Insertof Update,Delete opdrachtsjabloon uitgevoerd om de gewijzigde rij door te geven aan de gegevensbron. Wanneer een toepassing de Update methode aanroeptRowState, onderzoekt de DataAdapter eigenschap en voert de vereiste INSERT-, UPDATE- of DELETE-instructies iteratief uit voor elke rij, op basis van de volgorde van de indexen die in de DataSetindexen zijn geconfigureerd. U kunt bijvoorbeeld Update een DELETE-instructie uitvoeren, gevolgd door een INSERT-instructie en vervolgens een andere DELETE-instructie, vanwege de volgorde van de rijen in de DataTable.

Er moet worden opgemerkt dat deze instructies niet worden uitgevoerd als een batchproces; elke rij wordt afzonderlijk bijgewerkt. Een toepassing kan de GetChanges methode aanroepen in situaties waarin u de reeks instructietypen moet beheren (bijvoorbeeld INSERT vóór UPDATE). Zie Gegevensbronnen bijwerken met DataAdapters voor meer informatie.

Als INSERT-, UPDATE- of DELETE-instructies niet zijn opgegeven, genereert de Update methode een uitzondering. U kunt echter een SqlCommandBuilder- of OleDbCommandBuilder-object maken om automatisch SQL-instructies te genereren voor updates met één tabel als u de eigenschap SelectCommand van een .NET Framework-gegevensprovider instelt. Vervolgens worden eventuele aanvullende SQL-instructies die u niet instelt, gegenereerd door CommandBuilder. Deze generatielogica vereist dat belangrijke kolomgegevens aanwezig zijn in de DataSet. Zie Opdrachten genereren met CommandBuilders voor meer informatie.

Met Update de methode worden rijen opgehaald uit de tabel die wordt vermeld in de eerste toewijzing voordat een update wordt uitgevoerd. De Update rij wordt vervolgens vernieuwd met behulp van de waarde van de UpdatedRowSource eigenschap. Eventuele extra rijen die worden geretourneerd, worden genegeerd.

Nadat alle gegevens weer in de DataSetgebeurtenis zijn geladen, wordt de OnRowUpdated gebeurtenis gegenereerd, zodat de gebruiker de afstemmende DataSet rij en eventuele uitvoerparameters die door de opdracht worden geretourneerd, kan inspecteren. Nadat een rij is bijgewerkt, worden de wijzigingen in die rij geaccepteerd.

Wanneer u deze gebruikt Update, is de uitvoeringsvolgorde als volgt:

  1. De waarden in de waarden DataRow worden verplaatst naar de parameterwaarden.

  2. De OnRowUpdating gebeurtenis wordt gegenereerd.

  3. De opdracht wordt uitgevoerd.

  4. Als de opdracht is ingesteld op FirstReturnedRecord, wordt het eerste geretourneerde resultaat in de DataRow.

  5. Als er uitvoerparameters zijn, worden ze in de DataRow.

  6. De OnRowUpdated gebeurtenis wordt gegenereerd.

  7. DataRow.AcceptChanges wordt aangeroepen. Hiermee worden zowel de als DataTable.RowChanged de DataTable.RowChanging gebeurtenissen voor de bijgewerkte items gegenereerdDataRow.

Aan elke opdracht die aan de DataAdapter opdracht is gekoppeld, is er meestal een verzameling parameters aan gekoppeld. Parameters worden toegewezen aan de huidige rij via de eigenschappen SourceColumn en SourceVersion van de klasse Parameter van een .NET-gegevensprovider. SourceColumn verwijst naar een DataTable kolom waarnaar wordt DataAdapter verwezen om parameterwaarden voor de huidige rij te verkrijgen.

SourceColumn verwijst naar de naam van de niet-toegewezen kolom voordat tabeltoewijzingen zijn toegepast. Als SourceColumn deze verwijst naar een niet-bestaande kolom, is de uitgevoerde actie afhankelijk van een van de volgende MissingMappingAction waarden.

Opsommingswaarde Actie ondernomen
MissingMappingAction.Passthrough Gebruik de bronkolomnamen en tabelnamen in de DataSet lijst als er geen toewijzing aanwezig is.
MissingMappingAction.Ignore Er wordt een SystemException gegenereerd. Wanneer de toewijzingen expliciet zijn ingesteld, is een ontbrekende toewijzing voor een invoerparameter meestal het resultaat van een fout.
MissingMappingAction.Error Er wordt een SystemException gegenereerd.

De SourceColumn eigenschap wordt ook gebruikt om de waarde voor uitvoer- of invoer-/uitvoerparameters weer toe te wijzen aan de DataSet. Er wordt een uitzondering gegenereerd als deze verwijst naar een niet-bestaande kolom.

De eigenschap SourceVersion van de Parameter-klasse van een .NET gegevensprovider bepaalt of de oorspronkelijke, huidige of voorgestelde versie van de kolomwaarde moet worden gebruikt. Deze mogelijkheid wordt vaak gebruikt om oorspronkelijke waarden op te nemen in de WHERE-component van een UPDATE-instructie om te controleren op optimistische gelijktijdigheidsschendingen.

Als u de AcceptChanges methode of AcceptChanges methode aanroept, worden alle wijzigingen in de DataSet of DataTabledoorgevoerd. Als een van deze methoden wordt aangeroepen voordat de Update methode wordt aangeroepen, worden er geen wijzigingen doorgevoerd wanneer de Update methode wordt aangeroepen, tenzij er sindsdien verdere wijzigingen zijn aangebracht AcceptChanges of AcceptChanges aangeroepen.

Note

Als er een fout optreedt tijdens het bijwerken van een rij, wordt er een uitzondering gegenereerd en wordt de uitvoering van de update stopgezet. Als u de updatebewerking wilt voortzetten zonder uitzonderingen te genereren wanneer er een fout optreedt, stelt u de ContinueUpdateOnError eigenschap true in op voordat u aanroept Update. U kunt ook reageren op fouten per rij in de RowUpdated gebeurtenis van een DataAdapter. Als u de updatebewerking wilt voortzetten zonder een uitzondering binnen de RowUpdated gebeurtenis te genereren, stelt u de Status eigenschap van de RowUpdatedEventArgs bewerking in op Continue.

Voor elke kolom die u doorgeeft aan de gegevensbron, Updatemoet een parameter worden toegevoegd aan de InsertCommand, UpdateCommandof DeleteCommand. De SourceColumn eigenschap van de parameter moet worden ingesteld op de naam van de kolom. Deze instelling geeft aan dat de waarde van de parameter niet handmatig is ingesteld, maar wordt opgehaald uit de specifieke kolom in de momenteel verwerkte rij.

Van toepassing op

Zie ook