关于使用JDBC的批量操作插入ORACLE数据库数据丢失的问题

thineagle123 2017-11-17 09:13:50
在使用jdbc的批量操作批量插入oracle数据表中的时候, 只能插入一条数据,请问下是什么原因? 代码如下:

ds = getDataSource();
connection = ds.getConnection();
connection.setAutoCommit(false);

StringBuffer sqlBf = new StringBuffer();
sqlBf.append(" insert into dn_test_2 ");
sqlBf.append(" (colunm_a, colunm_b) ");
sqlBf.append(" select oo.colunm_a, ? ");
sqlBf.append(" from (select co.colunm_a, rownum rn ");
sqlBf.append(" from (select it.colunm_a from dn_test_1 it order by it.colunm_a) co ");
sqlBf.append(" where rownum <= ?) oo ");
sqlBf.append(" where rn >= ? ");

PreparedStatement sqlStmt = connection.prepareStatement(sqlBf.toString());

sqlStmt.setInt(1, 1);
sqlStmt.setInt(2, 1);
sqlStmt.setInt(3, 1);
sqlStmt.addBatch();

sqlStmt.setInt(1, 2);
sqlStmt.setInt(2, 2);
sqlStmt.setInt(3, 2);
sqlStmt.addBatch();

sqlStmt.setInt(1, 3);
sqlStmt.setInt(2, 3);
sqlStmt.setInt(3, 3);
sqlStmt.addBatch();

sqlStmt.executeBatch();

connection.commit();


其中dn_test_1 有三条数据。

但是如果把addbatch的顺序调整下, 第三个放到第一个,第一个放到第三个就又能插入3条数据了, 请问下这是什么原因。
...全文
169 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧