繁体   English   中英

此getGeneratedKeys()JDBC语句有什么问题?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM