IDataAdapter.Update(DataSet) Methode

Definitie

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

public:
 int Update(System::Data::DataSet ^ dataSet);
public int Update(System.Data.DataSet dataSet);
abstract member Update : System.Data.DataSet -> int
Public 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.

Uitzonderingen

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. In dit voorbeeld wordt ervan uitgegaan dat u een OleDbDataAdapter en een DataSet.

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

Wanneer een toepassing de Update methode aanroeptRowState, onderzoekt de IDataAdapter 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. Kan 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.

Houd er rekening mee dat deze instructies niet worden uitgevoerd als een batchproces; elke rij wordt afzonderlijk bijgewerkt. Een toepassing kan de GetChanges methode aanroepen als u de reeks instructietypen moet beheren (bijvoorbeeld INSERT's vóór UPDATEs). 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. Vervolgens Update wordt de rij bijgewerkt 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. AcceptChanges wordt aangeroepen.

Aan elke opdracht die aan de IDataAdapter opdracht is gekoppeld, is meestal een parameterverzameling gekoppeld. Parameters worden toegewezen aan de huidige rij via de eigenschappen SourceColumn en SourceVersion van de Parameter-klasse van een .NET Framework-gegevensprovider. SourceColumn verwijst naar een DataTable kolom waarnaar wordt IDataAdapter 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 Ondernomen actie
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, wordt een ontbrekende toewijzing voor een invoerparameter meestal veroorzaakt door 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 een .NET Framework-gegevensprovider Parameter bepaalt of de Original, Current of Proposed 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.

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.

Van toepassing op