这个问题已经在这里有了答案 :
9年前关闭。
嗨,我正在使用JDBC通过Java连接数据库。
现在,我执行一些插入查询,并且需要获取最后插入值的ID(因此,在之后stmt.executeUpdate)。
我不需要类似之类的东西SELECT id FROM table ORDER BY id DESC LIMIT 1,因为我可能有并发问题。
我只需要检索与上一次插入相关的ID(关于我的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人们:)