La seule façon que certains pilotes JDBC pour revenir Statement.RETURN_GENERATED_KEYS
est de faire quelque chose de l'suivantes:
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);
}
Est-il un moyen de faire la même chose avec PreparedStatement
?
Modifier
La raison pour laquelle je demande si je peux faire la même chose avec PreparedStatement
envisagez le scénario suivant:
private static final String SQL_CREATE = "INSERT INTO USER(FIRST_NAME, MIDDLE_NAME, LAST_NAME, EMAIL_ADDRESS, DOB) VALUES (?, ?, ?, ?, ?)";
Dans l' USER
tableau il y a un PRIMARY KEY (USER_ID)
qui est un BIGINT AUTOINCREMENT
(c'est pourquoi vous ne le voyez pas dans l' SQL_CREATE
Chaîne de caractères.
Maintenant, je peuplent l' ?
l'aide PreparedStatement.setXXXX(index, value)
. Je veux rentrer ResultSet rs = PreparedStatement.getGeneratedKeys()
. Comment puis-je y parvenir?