Возможный дубликат:
Как получить идентификатор вставки в JDBC?
Привет, я использую JDBC для подключения к базе данных через Java.
Теперь, я делаю некоторый запрос на вставку, и мне нужно получить идентификатор последнего вставленного значения (так, после stmt.executeUpdate
).
Мне не нужно что-то вроде SELECT id FROM table ORDER BY id DESC LIMIT 1
, потому что у меня могут быть проблемы с concurrency.
Мне просто нужно получить идентификатор, связанный с последней вставкой (о моем экземпляре Statement).
Я пробовал это, но похоже, что он не работает на JDBC:
public Integer insertQueryGetId(String query) {
Integer numero=0;
Integer risultato=-1;
try {
Statement stmt = db.createStatement();
numero = stmt.executeUpdate(query);
ResultSet rs = stmt.getGeneratedKeys();
if (rs.next()){
risultato=rs.getInt(1);
}
rs.close();
stmt.close();
} catch (Exception e) {
e.printStackTrace();
errore = e.getMessage();
risultato=-1;
}
return risultato;
}
Фактически, каждый раз risultato = -1
, и я получаю java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
Как я могу исправить эту проблему? Спасибо Stackoverflow People:)