Ändern von Resultsetdaten - Beispiel

Diese Beispielanwendung für Microsoft SQL Server JDBC Driver veranschaulicht, wie ein aktualisierbares Datenset aus einer SQL Server-Datenbank abgerufen. 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 "updateRS.java" und befindet sich im folgenden Pfad:

<Installationsverzeichnis>\sqljdbc_<Version>\<Sprache>\help\samples\resultsets

Anforderungen

Wenn Sie diese Beispielanwendung ausführen möchten, müssen Sie die Datei sqljdbc.jar oder sqljdbc4.jar in den Klassenpfad aufnehmen. Wenn im Klassenpfad kein Eintrag für sqljdbc.jar oder sqljdbc4.jar vorhanden ist, löst die Beispielanwendung die allgemeine Ausnahme "Klasse nicht gefunden" aus. Sie benötigen darüber hinaus Zugriff auf die SQL Server 2005 AdventureWorks-Beispieldatenbank. Weitere Informationen zum Festlegen des Klassenpfads finden Sie unter Verwenden des JDBC-Treibers.

Hinweis

Microsoft SQL Server JDBC Driver, Version 2.0, enthält die Klassenbibliotheksdateien sqljdbc.jar und sqljdbc4.jar für die jeweilige Verwendung mit den bevorzugten JRE (Java Runtime Environment)-Einstellungen. Weitere Informationen zum Auswählen der richtigen JAR-Datei finden Sie unter Systemanforderungen für den JDBC-Treiber.

Beispiel

Im folgenden Beispielcode wird eine Verbindung mit der AdventureWorks-Beispieldatenbank hergestellt. 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 der Resultsetcursor mithilfe der moveToInsertRow-Methode zur neuen Zeile bewegt. Mit mehreren updateString-Methoden werden anschließend Daten in die Zeile eingefügt. Daraufhin wird die insertRow-Methode aufgerufen, um die neue Datenzeile in der Datenbank zu speichern.

Nachdem die neue Datenzeile eingefügt wurde, wird die zuvor eingefügte Zeile mithilfe einer SQL-Anweisung abgerufen. Anschließend wird die Datenzeile mit einer Kombination von 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.*;

public class updateRS {

   public static void main(String[] args) {

      // Create a variable for the connection string.
      String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
            "databaseName=AdventureWorks;integratedSecurity=true;";

      // Declare the JDBC objects.
      Connection con = null;
      Statement stmt = null;
      ResultSet rs = null;
 
      try {
         
         // Establish the connection.
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         con = DriverManager.getConnection(connectionUrl);

         // Create and execute an SQL statement, retrieving an updateable result set.
         String SQL = "SELECT * FROM HumanResources.Department;";
         stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
         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 (Exception e) {
         e.printStackTrace();
      }

      finally {
         if (rs != null) try { rs.close(); } catch(Exception e) {}
         if (stmt != null) try { stmt.close(); } catch(Exception e) {}
         if (con != null) try { con.close(); } catch(Exception e) {}
      }
   }

   private static void displayRow(String title, ResultSet rs) {
      try {
         System.out.println(title);
         while (rs.next()) {
            System.out.println(rs.getString("Name") + " : " + rs.getString("GroupName"));
            System.out.println();
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

Siehe auch

Andere Ressourcen

Arbeiten mit Resultsets