此代码片段
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().
我说在创建声明时请求生成的密钥,但显然我错了。这是什么问题? (我是JDBC的新手。我试图做的是检索在前一个记录插入过程中自动设置的主键值(AUTO_INCREMENTed)。也许还有更好的方法可以做到这一点。我正在使用mysql。)
答案 0 :(得分:2)
你的问题就在这一行:
statement.executeUpdate(query);
在使用no参数版本时不传递query
参数:
statement.executeUpdate();
第一个版本不使用您已经编写的语句,而是使用您的查询字符串(不使用RETURN_GENERATED_KEYS选项)创建一个新语句
答案 1 :(得分:2)
从
中删除参数statement.executeUpdate(query);
更改为
statement.executeUpdate();
因为您已经在
中准备了声明PreparedStatement statement = connect.prepareStatement(
query, Statement.RETURN_GENERATED_KEYS);