[英]What is wrong with this getGeneratedKeys() JDBC statement?
该代码片段
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)。
您的问题是这一行:
statement.executeUpdate(query);
不要在使用无参数版本时传递query
参数:
statement.executeUpdate();
第一个版本不使用您已经做过的准备好的语句,而是使用查询字符串来创建一个新的语句(不带RETURN_GENERATED_KEYS选项)
从中删除参数
statement.executeUpdate(query);
改成
statement.executeUpdate();
因为您已经在
PreparedStatement statement = connect.prepareStatement(
query, Statement.RETURN_GENERATED_KEYS);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.