java - 为什么 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.sql
API 规范和JDBC 4.3 规范(特别是第 13.6 节)都没有指定这种行为。它在规范文档中的何处明确说明了异常消息命令用户执行的操作?
我能找到的只有这个:
如果此
Statement
对象没有生成任何键,ResultSet
则返回一个空对象。[来源:getGeneratedKeys()
Javadoc]
我期待一个空ResultSet
而不是异常。
解决方案
推荐阅读
- nginx - nginx rtmp conf 使用参数
- list - Scala - 通过组合一个列表的内容和另一个列表的层次结构来创建一个新列表
- machine-learning - 如何下载手套预训练词向量的共现矩阵
- apache-spark - 如何在火花中使用hbase表
- angular - 如何导航以角度登录
- c# - ASP.NET CORE 3.0 中的路由问题
- bash - 在 Mac 中打开终端 (bash) 时显示错误消息
- python - 将一行分布在共享相同键的其他行上
- java - 在 SSL 证书中管理 CN
- vba - VBA - 将开放文档电子表格 (ODS) 导入/传输到 MS Access