Ändern von Resultsetdaten – Beispiel
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 mithilfe einer SQL-Anweisung mit dem SQLServerStatement-Objekt die SQL-Anweisung ausgeführt und die daten, die sie in ein aktualisierbares SQLServerResultSet-Objekt zurückgibt, platziert.
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 verwendet der Beispielcode eine SQL-Anweisung, um die zuvor eingefügte Zeile abzurufen. 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 a 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();
}
}
}