【发布时间】:2013-01-29 10:38:57
【问题描述】:
我正在尝试从executeBatch() 事务中检索生成的密钥,但我只获得了要添加的最后一个密钥。
这是我的代码:
PreparedStatement ps_insert = conn.prepareStatement(insertQuery, PreparedStatement.RETURN_GENERATED_KEYS);
for (int i = 0 ; i < adding_dates.length ; i++){
ps_insert.setInt(1, Integer.parseInt(consultant_id));
ps_insert.setDate(2, adding_dates[i]);
ps_insert.setInt(3, Integer.parseInt(room_id));
ps_insert.addBatch();
}
ps_insert.executeBatch();
ResultSet rs = ps_insert.getGeneratedKeys(); //<-- Only the last key retrieved
conn.commit();
我做错了什么?
编辑:抱歉没有提到我在嵌入式模式下使用 H2 (http://www.h2database.com/html/main.html) 数据库。
【问题讨论】:
-
您使用的是哪个数据库/JDBC 驱动程序?应该是JDBC实现的问题。
-
只是为了创建完整的图片显示请rs迭代代码
-
@partlov 你是对的。部分 JDBC 实现不支持 getGeneratedKeys() 功能:stackoverflow.com/questions/13641832/…