首页 > 解决方案 > 为什么 MySQL Connector/J 抛出 java.sql.SQLException: Generated keys not requested?

问题描述

为什么下面的代码片段:

PreparedStatement ps = con.prepareStatement("CREATE TABLE foo (name VARCHAR(30))");
ps.executeUpdate(); // or ps.execute();
ps.getGeneratedKeys(); // <-- throws an exception

抛出这个异常:

java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate(), Statement.executeLargeUpdate() or Connection.prepareStatement().

如果我错了,请纠正我,但java.sqlAPI 规范和JDBC 4.3 规范(特别是第 13.6 节)都没有指定这种行为。它在规范文档中的何处明确说明了异常消息命令用户执行的操作?

我能找到的只有这个:

如果此Statement对象没有生成任何键,ResultSet 则返回一个空对象。[来源:getGeneratedKeys()Javadoc]

我期待一个空ResultSet而不是异常。

标签: javajdbcmysql-connector

解决方案



推荐阅读