Die einzige Möglichkeit, die einige JDBC-Treiber zurückgeben können, Statement.RETURN_GENERATED_KEYS
besteht darin, Folgendes zu tun:
long key = -1L;
Statement statement = connection.createStatement();
statement.executeUpdate(YOUR_SQL_HERE, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = statement.getGeneratedKeys();
if (rs != null && rs.next()) {
key = rs.getLong(1);
}
Gibt es eine Möglichkeit, dasselbe zu tun PreparedStatement
?
Bearbeiten
Der Grund, warum ich gefragt habe, ob ich dasselbe tun kann, ist PreparedStatement
das folgende Szenario:
private static final String SQL_CREATE =
"INSERT INTO
USER(FIRST_NAME, MIDDLE_NAME, LAST_NAME, EMAIL_ADDRESS, DOB)
VALUES (?, ?, ?, ?, ?)";
In der USER
Tabelle gibt es eine, PRIMARY KEY (USER_ID)
die eine ist BIGINT AUTOINCREMENT
(daher sehen Sie es nicht in der SQL_CREATE
Zeichenfolge.
Jetzt fülle ich die ?
Verwendung PreparedStatement.setXXXX(index, value)
. Ich möchte zurückkehren ResultSet rs = PreparedStatement.getGeneratedKeys()
. Wie kann ich das erreichen?
This method with argument cannot be called on a PreparedStatement or CallableStatement.
es bedeutet, dass wir executeUpdate () ohne Argument verwenden müssen, obwohl dieexecuteUpdate(arg)
Methode in der PreparedStatement-Klasse vererbt werden kann, aber wir müssen sie nicht verwenden, sonst erhalten wir SQLException.