- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这段代码片段
PreparedStatement statement = connect.prepareStatement(
query, Statement.RETURN_GENERATED_KEYS);
statement.executeUpdate(query);
try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
...
}
继续 throw
java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
我会说在创建语句时要求生成 key ,但显然我错了。这里的问题是什么? (我是 JDBC 的新手。我想做的是检索在前面的记录插入期间自动设置(AUTO_INCREMENTed)的主键值。也许有更好的方法来做到这一点......我是使用 mysql。)
最佳答案
你的问题是这一行:
statement.executeUpdate(query);
不要在使用无参数版本时传递query
参数:
statement.executeUpdate();
第一个版本不使用您已经创建的准备好的语句,而是使用您的查询字符串创建一个新的语句(没有 RETURN_GENERATED_KEYS 选项)
关于java - 这个 getGeneratedKeys() JDBC 语句有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31727617/
我想获取持久对象的 ID。我正在使用 EJB 3.1。 我使用准备好的语句来执行此操作并且效果很好。 ResultSet generatedKeys = statement.getGeneratedK
我将 executeBatch() 与 JDBC 一起使用来插入多行,我想获取插入行的 ID 以进行另一次插入 我为此目的使用此代码: insertInternalStatement = dbConn
我在 try-with-resources 语句中使用了 java 准备语句来访问表 在带有 NetBeans 8.0 IDE 的 Java DB 数据库中。运行 executeUpdate 方法后,
我正在升级到 Grails 2.3.9 的 Hibernate4:4.3.5.3 插件。但是,我收到一个错误: getGeneratedKeys() support is not enabled 我无
我正在尝试做一些在我使用过的每个数据库中都有效的事情。我想从插入中获取生成的 key 。我有 oracle 12c 设置并有下表: CREATE TABLE countyUsers (id integ
这段代码片段 PreparedStatement statement = connect.prepareStatement( query, Statement.RETURN_GEN
我已经了解到 mysql 中的 last_insert_id 不是池安全的。也就是说,如果你正在合并连接,你会弄乱 insert_ids。java 的 statement.getGeneratedKe
我最近从 MySQL 切换到 PostgreSQL 用于项目的后端,并发现我的一些数据库代理方法需要审查。为了插入链接对象,我使用事务来确保所有内容都已存储。我使用诸如 setAutoCommit(f
好的,我错过了什么? 我有这样一张表: CREATE TABLE PUBLIC.RESULTS (RESULTID IDENTITY NOT NULL, SOURCEID INTEGER NOT NU
我想使用 PreparedStatement INSERT 几行: ps = con.prepareStatement(query,PreparedStatement.RETURN_GENERATED
我有一个表,其中有一列定义为自动生成键。执行以下代码时,我希望生成一个新 key ,但事实并非如此。插入一行,但 ps.getGeneratedKeys() 的结果集为空。 我正在使用 DB2:SQL
我希望 JDBI 将自动生成的主键(Long 值)转换为另一个类。 我的 DAO: @RegisterMapper(SystemIdMapper.class) public interface Sys
preparedStatement.getGeneratedKeys() 在查询只有一个 INSERT MySQL 语句时工作正常,但如果查询中有多个语句,它不会返回生成的 ID,即: test 有
我创建的表是这样的: public final String CREATE_QUESTIONS_TABLE = "CREATE TABLE Questions(QuestionID INTEGER P
我正在玩 JDBC/MySQL 5.1。我创建了一个 insert 查询来将一些数据插入到表中,并希望从新创建的行中返回生成的键。但是,当我通过“id”引用列时,这是我的 PK 和自动递增列。 Pre
Python的sqlite3模块中有没有类似于Java的statement.getGeneratedKeys()的API?如果没有,使用 sqlite3 在 Python 中获取最近自动生成的 key
我想使用插入查询检索表中最近更新的值。 这些是我的 sql 表中的数据类型。 数据类型: int(11) // primary key auto increment, not being a
我在 table 上做了一个“简单的”,它给出了这个错误。搜索网络没有帮助。 我认为使用序列作为我的主键源与我有关。 你能帮忙吗?谢谢 我正在尝试运行的代码(我已经突出显示了引发错误的部分)
我正在使用 JDBC 向 MYSQL 数据库中插入一行。我构建了一个参数化命令,执行它并尝试检索自动生成的 key ,如下所示: String sql = "INSERT IGNORE INTO `u
我有一个查询如下: String SQL = "insert into table (id, name) values (sequence.nextval, ?)"; 然后我像这样制作一个 Prepa
我是一名优秀的程序员,十分优秀!