问题描述
该代码片段
PreparedStatement statement = connect.prepareStatement(
query, Statement.RETURN_GENERATED_KEYS);
statement.executeUpdate(query);
try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
...
}
不断扔
java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
我想说的是在创建语句时要求了generatedkeys,但是显然我错了。 这是什么问题? (我是JDBC的新手。我想做的是检索在先前的记录插入过程中已自动设置(AUTO_INCREMENTed)的主键值。也许有更好的方法来实现...使用mysql)。
1楼
您的问题是这一行:
statement.executeUpdate(query);
不要在使用无参数版本时传递query
参数:
statement.executeUpdate();
第一个版本不使用您已经做过的准备好的语句,而是使用查询字符串来创建一个新的语句(不带RETURN_GENERATED_KEYS选项)
2楼
从中删除参数
statement.executeUpdate(query);
改成
statement.executeUpdate();
因为您已经在
PreparedStatement statement = connect.prepareStatement(
query, Statement.RETURN_GENERATED_KEYS);