IDataAdapter.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
Assembly: System.Data (in system.data.dll)
Syntax
'Declaration
Function Update ( _
dataSet As DataSet _
) As Integer
'Usage
Dim instance As IDataAdapter
Dim dataSet As DataSet
Dim returnValue As Integer
returnValue = instance.Update(dataSet)
int Update (
DataSet dataSet
)
int Update (
DataSet^ dataSet
)
int Update (
DataSet dataSet
)
function Update (
dataSet : DataSet
) : int
Parameter
- dataSet
Die DataSet, mit der die Datenquelle aktualisiert wird.
Rückgabewert
Die Anzahl der erfolgreich aktualisierten Zeilen im DataSet.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
Der Versuch, eine INSERT-Anweisung, UPDATE-Anweisung oder DELETE-Anweisung auszuführen, ergab 0 (null) betroffene Datensätze. |
Hinweise
Wenn eine Anwendung die Update-Methode aufruft, untersucht der IDataAdapter 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-Anweisungen vor UPDATE-Anweisungen), 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 generiert. 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:
Die Werte in der DataRow-Klasse werden in die Parameterwerte verschoben.
Das OnRowUpdating-Ereignis wird ausgelöst.
Der Befehl wird ausgeführt.
Wenn der Befehl auf FirstReturnedRecord festgelegt ist, wird das erste zurückgegebene Ergebnis in der DataRow platziert.
Wenn Ausgabeparameter vorhanden sind, werden diese in der DataRow platziert.
Das OnRowUpdated-Ereignis wird ausgelöst.
Die AcceptChanges-Methode wird aufgerufen.
Jedem dem IDataAdapter 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 Framework-Datenanbieters zugeordnet. SourceColumn bezieht sich auf eine DataTable-Spalte, auf die der IDataAdapter 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 generiert. 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 generiert. |
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 Framework-Datenanbieters bestimmt, ob die Original-Version, die Current-Version oder die Proposed-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. In diesem Beispiel wird davon ausgegangen, dass ein OleDbDataAdapter und ein DataSet erstellt wurden.
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
IDataAdapter-Schnittstelle
IDataAdapter-Member
System.Data-Namespace