Automatisch generierte Schlüssel für eine Anweisung INSERT abrufen
Mit dem IBM® Data Server Driver for JDBC and SQLJ können Sie JDBC 3.0-Methoden verwenden, um die Schlüssel abzurufen, die automatisch generiert werden, wenn Sie eine Anweisung INSERT ausführen.
Vorgehensweise
Wenn Sie automatisch generierte Schlüssel abrufen möchten, die von einer Anweisung INSERT generiert werden, müssen Sie die folgenden Schritte ausführen:
Beispiel
Der folgende Code erstellt eine Tabelle mit einer Identitätsspalte, fügt eine Zeile in die Tabelle ein und ruft den automatisch generierten Schlüsselwert für die Identitätsspalte ab. Die Zahlen rechts von den ausgewählten Anweisungen entsprechen den zuvor beschriebenen Schritten.
import java.sql.*;
import java.math.*;
import com.ibm.db2.jcc.*;
Connection con;
Statement stmt;
ResultSet rs;
java.math.BigDecimal iDColVar;
…
stmt = con.createStatement(); // Anweisungsobjekt erstellen
stmt.executeUpdate(
"CREATE TABLE EMP_PHONE (EMPNO CHAR(6), PHONENO CHAR(4), " +
"IDENTCOL INTEGER GENERATED ALWAYS AS IDENTITY)");
// Tabelle mit Identitätsspalte erstellen
stmt.executeUpdate("INSERT INTO EMP_PHONE (EMPNO, PHONENO) " + 1
"VALUES ('000010', '5555')", // Zeile einfügen
Statement.RETURN_GENERATED_KEYS); // Angeben, dass automatisch generierte
// Schlüssel zurückgegeben werden sollen
rs = stmt.getGeneratedKeys(); // Automatisch generierten Schlüssel- 2
// wert in Ergebnismenge abrufen
// Rückgabe einer einzigen Zeile
// Ergebnismenge für Abfrage erstellen
while (rs.next()) {
java.math.BigDecimal idColVar = rs.getBigDecimal(1);
// Automatisch generierten
// Schlüsselwert abrufen
System.out.println("automatically generated key value = " + idColVar);
}
rs.close(); // Ergebnismenge schließen
stmt.close(); // Anweisung schließen
Der folgende Code erstellt eine Tabelle mit einer Identitätsspalte, fügt zwei Zeilen mithilfe einer Anweisung INSERT mit mehreren Zeilen in die Tabelle ein und ruft die automatisch generierten Schlüsselwerte für die Identitätsspalte ab. Die Zahlen rechts von den ausgewählten Anweisungen entsprechen den zuvor beschriebenen Schritten.
import java.sql.*;
import java.math.*;
import com.ibm.db2.jcc.*;
Connection con;
Statement stmt;
ResultSet rs;
…
stmt = con.createStatement();
stmt.executeUpdate(
"CREATE TABLE EMP_PHONE (EMPNO CHAR(6), PHONENO CHAR(4), " +
"IDENTCOL INTEGER GENERATED ALWAYS AS IDENTITY)");
// Tabelle mit Identitätsspalte erstellen
String[] id_col = {"IDENTCOL"};
int updateCount = 1
stmt.executeUpdate("INSERT INTO EMP_PHONE (EMPNO, PHONENO)" +
"VALUES ('000010', '5555'), ('000020', '5556')", id_col);
// Zwei Zeilen einfügen
// Angeben, dass automatisch generierte
// Schlüssel zurückgegeben werden sollen
rs = stmt.getGeneratedKeys(); // Automatisch generierte Schlüssel- 2
// werte in Ergebnismenge abrufen
// Es werden zwei Zeilen zurückgegeben.
// Ergebnismenge für Abfrage erstellen
while (rs.next()) {
int idColVar = rs.getInt(1);
// Automatisch generierte
// Schlüsselwerte abrufen
System.out.println("automatically generated key value = " + idColVar);
}
stmt.close();
con.close();