Die einzige Möglichkeit, die einige JDBC-Treiber zurückgeben können, Statement.RETURN_GENERATED_KEYSbesteht 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 PreparedStatementdas folgende Szenario:
private static final String SQL_CREATE =
"INSERT INTO
USER(FIRST_NAME, MIDDLE_NAME, LAST_NAME, EMAIL_ADDRESS, DOB)
VALUES (?, ?, ?, ?, ?)";
In der USERTabelle gibt es eine, PRIMARY KEY (USER_ID)die eine ist BIGINT AUTOINCREMENT(daher sehen Sie es nicht in der SQL_CREATEZeichenfolge.
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.