Freigeben über


Ändern von Resultsetdaten – Beispiel

JDBC-Treiber herunterladen

Diese Beispielanwendung für den Microsoft JDBC-Treiber für SQL Server veranschaulicht, wie Sie ein aktualisierbares Dataset aus einer SQL Server-Datenbank abrufen. Anschließend wird mit den Methoden der SQLServerResultSet-Klasse eine Datenzeile in das Datenset eingefügt, geändert und schließlich wieder gelöscht.

Die Codedatei für dieses Beispiel heißt „UpdateResultSet.java“ und befindet sich im folgenden Pfad:

\<installation directory>\sqljdbc_<version>\<language>\samples\resultsets

Requirements (Anforderungen)

Wenn Sie diese Beispielanwendung ausführen möchten, müssen Sie die Datei „mssql-jdbc.jar“ in den Klassenpfad aufnehmen. Darüber hinaus benötigen Sie Zugriff auf die AdventureWorks2022-Beispieldatenbank. Weitere Informationen zum Festlegen des Klassenpfads finden Sie unter mit dem JDBC-Treiber.

Hinweis

Der Microsoft JDBC-Treiber für SQL Server enthält die Klassenbibliotheksdateien „mssql-jdbc“ für die jeweilige Verwendung mit Ihren bevorzugten JRE-Einstellungen (Java Runtime Environment). Weitere Informationen zum Auswählen der richtigen JAR-Datei finden Sie unter Systemanforderungen für den JDBC-Treiber.

Beispiel

Der Beispielcode stellt eine Verbindung mit der AdventureWorks2022-Beispieldatenbank her. Anschließend wird eine SQL-Anweisung mit dem SQLServerStatement-Objekt verwendet. Die SQL-Anweisung wird ausgeführt, und die zurückgegebenen Daten werden in ein aktualisierbares SQLServerResultSet-Objekt eingefügt.

Danach wird im Beispielcode die moveToInsertRow-Methode verwendet, um den Resultsetcursor in die Einfügezeile zu verschieben. Anschließend werden die Daten mithilfe mehrerer updateString-Methoden in die neue Zeile eingefügt. Danach wird die insertRow-Methode aufgerufen, um die neue Datenzeile in der Datenbank zu speichern.

Nach dem Einfügen der neuen Datenzeile ruft der Beispielcode mit einer SQL-Anweisung die zuvor eingefügte Zeile ab. Danach wird die Datenzeile mit einer Kombination aus updateString- und updateRow-Methoden aktualisiert und erneut in der Datenbank gespeichert.

Schließlich wird die zuvor aktualisierte Datenzeile abgerufen und mit der deleteRow-Methode aus der Datenbank gelöscht.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class UpdateResultSet {

    public static void main(String[] args) {

        // Create a variable for the connection string.
        String connectionUrl = "jdbc:sqlserver://<server>:<port>;encrypt=true;databaseName=AdventureWorks;user=<user>;password=<password>";

        try (Connection con = DriverManager.getConnection(connectionUrl);
                Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);) {

            // Create and execute an SQL statement, retrieving an updateable result set.
            String SQL = "SELECT * FROM HumanResources.Department;";
            ResultSet rs = stmt.executeQuery(SQL);

            // Insert a row of data.
            rs.moveToInsertRow();
            rs.updateString("Name", "Accounting");
            rs.updateString("GroupName", "Executive General and Administration");
            rs.updateString("ModifiedDate", "08/01/2006");
            rs.insertRow();

            // Retrieve the inserted row of data and display it.
            SQL = "SELECT * FROM HumanResources.Department WHERE Name = 'Accounting';";
            rs = stmt.executeQuery(SQL);
            displayRow("ADDED ROW", rs);

            // Update the row of data.
            rs.first();
            rs.updateString("GroupName", "Finance");
            rs.updateRow();

            // Retrieve the updated row of data and display it.
            rs = stmt.executeQuery(SQL);
            displayRow("UPDATED ROW", rs);

            // Delete the row of data.
            rs.first();
            rs.deleteRow();
            System.out.println("ROW DELETED");
        }
        // Handle any errors that may have occurred.
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private static void displayRow(String title,
            ResultSet rs) throws SQLException {
        System.out.println(title);
        while (rs.next()) {
            System.out.println(rs.getString("Name") + " : " + rs.getString("GroupName"));
            System.out.println();
        }
    }
}

Siehe auch

Arbeiten mit Resultsets