Freigeben über


DataAdapter.Update-Methode

Ruft für jede Zeile im angegebenen DataSet einer DataTable mit dem Namen "Table", die eingefügt, aktualisiert oder gelöscht wird, die INSERT-Anweisung, die UPDATE-Anweisung bzw. die DELETE-Anweisung auf.

Namespace: System.Data.Common
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public Overridable Function Update ( _
    dataSet As DataSet _
) As Integer
'Usage
Dim instance As DataAdapter
Dim dataSet As DataSet
Dim returnValue As Integer

returnValue = instance.Update(dataSet)
public virtual int Update (
    DataSet dataSet
)
public:
virtual int Update (
    DataSet^ dataSet
)
public int Update (
    DataSet dataSet
)
public function Update (
    dataSet : DataSet
) : int

Parameter

  • dataSet
    Das zum Aktualisieren der Datenquelle verwendete DataSet.

Rückgabewert

Die Anzahl der erfolgreich aktualisierten Zeilen im DataSet.

Ausnahmen

Ausnahmetyp Bedingung

InvalidOperationException

Die Quelltabelle ist ungültig.

DBConcurrencyException

Der Versuch, eine INSERT-Anweisung, UPDATE-Anweisung oder DELETE-Anweisung auszuführen, ergab 0 betroffene Datensätze.

Hinweise

Wenn eine Anwendung die Update-Methode aufruft, untersucht der DataAdapter die RowState-Eigenschaft und führt die erforderlichen INSERT-Anweisungen, UPDATE-Anweisungen oder DELETE-Anweisungen basierend auf der im DataSet konfigurierten Reihenfolge der Indizes iterativ für jede Zeile aus. Beispielsweise kann mit Update abhängig von der Reihenfolge der Zeilen in der DataTable zuerst eine DELETE-Anweisung, anschließend eine INSERT-Anweisung und dann eine weitere DELETE-Anweisung ausgeführt werden.

Beachten Sie, dass diese Anweisungen nicht als Batchprozess ausgeführt werden, sondern dass jede Zeile einzeln aktualisiert wird. Wenn die Reihenfolge der Anweisungstypen gesteuert werden muss (z. B. INSERT vor UPDATE), kann eine Anwendung die GetChanges-Methode aufrufen. Weitere Informationen finden Sie unter Aktualisieren von Datenquellen mit DataAdapters.

Wenn keine INSERT-Anweisungen, UPDATE-Anweisungen oder DELETE-Anweisungen angegeben sind, wird von der Update-Methode eine Ausnahme ausgelöst. Sie können jedoch ein SqlCommandBuilder-Objekt oder ein OleDbCommandBuilder-Objekt erstellen, um SQL-Anweisungen für das Aktualisieren einzelner Tabellen automatisch zu generieren, wenn Sie die SelectCommand-Eigenschaft eines .NET Framework-Datenanbieters festlegen. Anschließend werden alle zusätzlichen, von Ihnen nicht festgelegten SQL-Anweisungen durch den CommandBuilder generiert. Für diese Generierungslogik müssen im DataSet Schlüsselspalteninformationen vorhanden sein. Weitere Informationen finden Sie unter Automatisches Generieren von Befehlen.

Vor dem Ausführen einer Aktualisierung ruft die Update-Methode Zeilen aus der Tabelle ab, die in der ersten Zuordnung aufgelistet ist. Anschließend aktualisiert Update die Zeile unter Verwendung des Werts der UpdatedRowSource-Eigenschaft. Alle weiteren zurückgegebenen Zeilen werden ignoriert.

Nachdem alle Daten wieder in das DataSet geladen wurden, wird das OnRowUpdated-Ereignis ausgelöst, sodass der Benutzer die abgeglichene DataSet-Zeile und alle durch den Befehl zurückgegebenen Ausgabeparameter überprüfen kann. Nachdem eine Zeile erfolgreich aktualisiert wurde, werden die an der Zeile vorgenommenen Änderungen akzeptiert.

Bei der Verwendung von Update erfolgt die Ausführung in folgender Reihenfolge:

  1. Die Werte in der DataRow werden in die Parameterwerte verschoben.

  2. Das OnRowUpdating-Ereignis wird ausgelöst.

  3. Der Befehl wird ausgeführt.

  4. Wenn der Befehl auf FirstReturnedRecord festgelegt ist, wird das erste zurückgegebene Ergebnis in der DataRow platziert.

  5. Wenn Ausgabeparameter vorhanden sind, werden diese in der DataRow platziert.

  6. Das OnRowUpdated-Ereignis wird ausgelöst.

  7. AcceptChanges wird aufgerufen.

Jedem dem DataAdapter zugeordneten Befehl ist i. d. R. eine Auflistung von Parametern zugeordnet. Parameter werden der aktuellen Zeile durch die SourceColumn-Eigenschaft und die SourceVersion-Eigenschaft der Parameter-Klasse eines .NET-Datenanbieters zugeordnet. SourceColumn bezieht sich auf eine DataTable-Spalte, auf die der DataAdapter verweist, um Parameterwerte für die aktuelle Zeile abzurufen.

SourceColumn bezieht sich auf den nicht zugeordneten Spaltennamen vor der Anwendung von Tabellenzuordnungen. Wenn sich SourceColumn auf eine nicht vorhandene Spalte bezieht, hängt die ausgeführte Aktion von einem der folgenden MissingMappingAction-Werte ab.

Enumerationswert

Ausgeführte Aktion

MissingMappingAction.Passthrough

Verwenden Sie die Quellspaltennamen und Tabellennamen im DataSet, wenn keine Zuordnung vorhanden ist.

MissingMappingAction.Ignore

Eine SystemException wird ausgelöst. Wenn die Zuordnungen ausdrücklich festgelegt sind, ist die Ursache einer fehlenden Zuordnung für einen Eingabeparameter i. d. R. ein Fehler.

MissingMappingAction.Error

Eine SystemException wird ausgelöst.

Die SourceColumn-Eigenschaft wird auch verwendet, um den Wert für Ausgabe- bzw. Eingabe-/Ausgabeparameter wieder dem DataSet zuzuordnen. Wenn diese auf eine nicht vorhandene Spalte verweist, wird eine Ausnahme ausgelöst.

Die SourceVersion-Eigenschaft der Parameter-Klasse eines .NET-Datenanbieters bestimmt, ob die ursprüngliche, die aktuelle oder die vorgeschlagene Version des Spaltenwerts verwendet wird. Diese Funktion wird häufig verwendet, um Originalwerte in die WHERE-Klausel einer UPDATE-Anweisung aufzunehmen, damit überprüft werden kann, ob Verletzungen der vollständigen Parallelität vorliegen.

Hinweis

Wenn beim Aktualisieren einer Zeile ein Fehler auftritt, wird eine Ausnahme ausgelöst, und die Aktualisierung wird nicht fortgesetzt. Um die Aktualisierung fortzusetzen, ohne dass bei auftretenden Fehlern Ausnahmen generiert werden, legen Sie vor dem Aufruf von Update die ContinueUpdateOnError-Eigenschaft auf true fest. Sie können im RowUpdated-Ereignis eines DataAdapter auch für jede Zeile einzeln auf Fehler reagieren. Um die Aktualisierung ohne Generieren einer Ausnahme im RowUpdated-Ereignis fortzusetzen, legen Sie die Status-Eigenschaft von RowUpdatedEventArgs auf Continue fest.

Beispiel

Im folgenden Beispiel wird die abgeleitete OleDbDataAdapter-Klasse verwendet, um Update für die Datenquelle auszuführen.

Public Function CreateCommandAndUpdate( _
    ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Dim dataSet As DataSet = New DataSet

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

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

        Dim commandBuilder As OleDbCommandBuilder = _
            New OleDbCommandBuilder(dataAdapter)

        dataAdapter.Fill(dataSet)

        ' Code to modify the data in the DataSet here. 

        ' Without the OleDbCommandBuilder this line would fail.
        dataAdapter.Update(dataSet)
    End Using
    CreateCommandAndUpdate = dataSet
End Function
static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();

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

        dataAdapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        //Without the OleDbCommandBuilder this line would fail.
        dataAdapter.Update(dataSet);
    }
    return dataSet;
}

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

DataAdapter-Klasse
DataAdapter-Member
System.Data.Common-Namespace