Freigeben über


Gewusst wie: Aktualisieren von Datensätzen in einer Datenbank

Aktualisiert: September 2010

Mithilfe der TableAdapter.Update-Methode können Sie Datensätze in einer Datenbank aktualisieren (bearbeiten). Die TableAdapter.Update-Methode stellt mehrere Überladungen zur Verfügung, die abhängig von den übergebenen Parametern verschiedene Vorgänge ausführen. Es ist wichtig, dass Sie wissen, zu welchen Ergebnissen das Aufrufen dieser Methodensignaturen führt.

Tipp

Wenn die Anwendung keine TableAdapters verwendet, können Sie Datensätze in der Datenbank mit Befehlsobjekten aktualisieren (z. B. ExecuteNonQuery). Weitere Informationen zum Aktualisieren von Daten mit Befehlsobjekten finden Sie weiter unten im Abschnitt "Aktualisieren von Datensätzen mithilfe von Befehlsobjekten".

In der folgenden Tabelle wird das Verhalten der verschiedenen TableAdapter.Update-Methoden beschrieben:

Methode

Beschreibung

TableAdapter.Update(DataTable)

Versucht, alle an der DataTable vorgenommenen Änderungen in der Datenbank zu speichern. (Dazu zählt das Entfernen von aus der Tabelle gelöschten Zeilen, das Hinzufügen von in die Tabelle eingefügten Zeilen oder das Aktualisieren von geänderten Zeilen in der Tabelle.)

TableAdapter.Update(DataSet)

Obwohl ein Dataset als Parameter verwendet wird, versucht der TableAdapter, alle Änderungen an der mit dem TableAdapter verknüpften DataTable in der Datenbank zu speichern. (Dazu zählt das Entfernen von aus der Tabelle gelöschten Zeilen, das Hinzufügen von in die Tabelle eingefügten Zeilen oder das Aktualisieren von geänderten Zeilen in der Tabelle.)

HinweisHinweis
Bei der mit einem TableAdapter verknüpften DataTable handelt es sich um die DataTable, die bei der ursprünglichen Konfiguration des TableAdapter erstellt wurde.

TableAdapter.Update(DataRow)

Versucht, die an der angegebenen DataRow vorgenommenen Änderungen in der Datenbank zu speichern.

TableAdapter.Update(DataRows())

Versucht, die an allen Zeilen im Array von DataRows vorgenommenen Änderungen in der Datenbank zu speichern.

TableAdapter.Update("new column values", "original column values")

Versucht, Änderungen an einer einzelnen Zeile zu speichern, die durch die ursprünglichen Spaltenwerte identifiziert wird.

Wenn die Anwendung ausschließlich Datasets zum Speichern von Daten verwendet, wird in der Regel die TableAdapter.Update-Methode verwendet, die ein DataSet, eine DataTable oder DataRow(s) entgegennimmt.

Wenn die Anwendung Objekte zum Speichern von Daten verwendet, wird in der Regel die TableAdapter.Update-Methode verwendet, die Spaltenwerte entgegennimmt.

Wenn der TableAdapter nicht über eine Update-Methode verfügt, die Spaltenwerte entgegennimmt, ist er entweder so konfiguriert, dass er gespeicherte Prozeduren verwendet, oder seine GenerateDBDirectMethods-Eigenschaft ist auf false festgelegt. Versuchen Sie, aus dem DataSet-Designer heraus die GenerateDBDirectMethods-Eigenschaft des TableAdapter auf true festzulegen, und speichern Sie das Dataset, um den TableAdapter neu zu generieren. Wenn der TableAdapter dann immer noch nicht über eine Update-Methode verfügt, die Spaltenwerte verwendet, stellt die Tabelle wahrscheinlich keine ausreichenden Schemainformationen zum Unterscheiden zwischen einzelnen Zeilen zur Verfügung (z. B. ist kein Primärschlüssel in der Tabelle festgelegt).

Aktualisieren vorhandener Datensätze mithilfe von TableAdapters

TableAdapters bieten verschiedene Möglichkeiten, Datensätze in einer Datenbank abhängig von den Anforderungen der Anwendung zu aktualisieren.

Wenn die Anwendung Daten mithilfe von Datasets speichert, können Sie die Datensätze einfach in der gewünschten DataTable aktualisieren und anschließend die TableAdapter.Update-Methode aufrufen und das DataSet, die DataTable, die DataRow oder ein Array von DataRows übergeben. Die verschiedenen Update-Methoden werden in der vorstehenden Tabelle beschrieben.

So aktualisieren Sie Datensätze in einer Datenbank mithilfe der TableAdapter.Update-Methode, die DataSet, DataTable, DataRow oder DataRows() verwendet

  1. Bearbeiten Sie Datensätze in der gewünschten DataTable, indem Sie die DataRow direkt in der DataTable bearbeiten. Weitere Informationen finden Sie unter Gewusst wie: Bearbeiten von Zeilen in einer DataTable.

  2. Nachdem die Zeilen in der DataTable bearbeitet wurden, rufen Sie die TableAdapter.Update-Methode auf. Sie können die zu aktualisierende Datenmenge steuern, indem Sie ein DataSet, eine DataTable, ein Array von DataRows oder eine einzelne DataRow übergeben.

    Der folgende Code veranschaulicht, wie ein Datensatz in einer DataTable bearbeitet und anschließend die TableAdapter.Update-Methode aufgerufen wird, um die Änderungen in der Datenbank zu speichern. (In diesem Beispiel wird die Tabelle Region der Datenbank Northwind verwendet.)

    ' Locate the row you want to update.
    Dim regionRow As NorthwindDataSet.RegionRow
    regionRow = NorthwindDataSet._Region.FindByRegionID(1)
    
    ' Assign the new value to the desired column.
    regionRow.RegionDescription = "East"
    
    ' Save the updated row to the database
    Me.RegionTableAdapter.Update(Me.NorthwindDataSet._Region)
    
    // Locate the row you want to update.
    NorthwindDataSet.RegionRow regionRow;
    regionRow = northwindDataSet.Region.FindByRegionID(1);
    
    // Assign the new value to the desired column.
    regionRow.RegionDescription = "East";
    
    // Save the updated row to the database.
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    

Wenn die Anwendung mithilfe von Objekten Daten in der Anwendung speichert, können Sie mit den DBDirect-Methoden des TableAdapter Daten direkt aus den Objekten an die Datenbank senden. Mithilfe dieser Methoden können Sie einzelne Werte für jede Spalte als Methodenparameter übergeben. Durch das Aufrufen dieser Methode wird ein vorhandener Datensatz in der Datenbank mit den an die Methode übergebenen Spaltenwerten aktualisiert.

In der folgenden Prozedur wird als Beispiel die Tabelle Region der Datenbank Northwind verwendet.

So aktualisieren Sie Datensätze in einer Datenbank mithilfe der TableAdapter.Update-Methode, die Spaltenwerte verwendet

  • Rufen Sie die Update-Methode des TableAdapter auf, um die neuen und ursprünglichen Werte für jede Spalte als Parameter zu übergeben.

    Tipp

    Wenn Ihnen keine Instanz zur Verfügung steht, instanziieren Sie den TableAdapter, den Sie verwenden möchten.

    Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter
    
    regionTableAdapter.Update(1, "East", 1, "Eastern")
    
    NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
        new NorthwindDataSetTableAdapters.RegionTableAdapter();
    
    regionTableAdapter.Update(1, "East", 1, "Eastern");
    

Aktualisieren von Datensätzen mithilfe von Befehlsobjekten

Im folgenden Beispiel werden vorhandene Datensätze mithilfe von Befehlsobjekten direkt in einer Datenbank aktualisiert. Weitere Informationen zum Verwenden von Befehlsobjekten, um Befehle und gespeicherte Prozeduren auszuführen, finden Sie unter Abrufen von Daten für die Anwendung.

In der folgenden Prozedur wird als Beispiel die Tabelle Region der Datenbank Northwind verwendet.

So aktualisieren Sie vorhandene Datensätze in einer Datenbank mithilfe von Befehlsobjekten

  • Erstellen Sie ein neues Befehlsobjekt, legen Sie die Eigenschaften Connection, CommandType und CommandText fest, stellen Sie eine Verbindung her, und führen Sie den Befehl aus.

    Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING")
    
    Dim cmd As New System.Data.SqlClient.SqlCommand
    cmd.CommandType = System.Data.CommandType.Text
    cmd.CommandText = "UPDATE Region SET [RegionDescription] = @RegionDescription WHERE [RegionID] = @RegionID"
    cmd.Parameters.AddWithValue("@RegionDescription", "East")
    cmd.Parameters.AddWithValue("@RegionID", "1")
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    cmd.ExecuteNonQuery()
    sqlConnection1.Close()
    
    System.Data.SqlClient.SqlConnection sqlConnection1 = 
        new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");
    
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "UPDATE Region SET [RegionDescription] = @RegionDescription WHERE [RegionID] = @RegionID";
    cmd.Parameters.AddWithValue("@RegionDescription", "East");
    cmd.Parameters.AddWithValue("@RegionID", "1");
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    cmd.ExecuteNonQuery();
    sqlConnection1.Close();
    

Sicherheit

Sie müssen über den Zugriff auf die Datenbank verfügen, zu der Sie eine Verbindung herstellen möchten. Außerdem müssen Sie über die Berechtigung zum Aktualisieren von Datensätzen in der gewünschten Tabelle verfügen.

Siehe auch

Aufgaben

Gewusst wie: Löschen von Datensätzen in einer Datenbank

Gewusst wie: Einfügen neuer Datensätze in eine Datenbank

Gewusst wie: Speichern von Daten aus einem Objekt in einer Datenbank

Konzepte

Übersicht über TableAdapters

Binden von Steuerelementen an Daten in Visual Studio

Weitere Ressourcen

Übersicht über Datenanwendungen in Visual Studio

Herstellen von Datenverbindungen in Visual Studio

Vorbereiten der Anwendung auf den Empfang von Daten

Abrufen von Daten für die Anwendung

Bearbeiten von Daten in der Anwendung

Überprüfen von Daten

Speichern von Daten

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

September 2010

Das letzte Codebeispiel wurde überarbeitet, sodass im SQL-Befehl Parameter statt hartcodierter Werte verwendet werden.

Informationsergänzung.