关于使用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条数据了, 请问下这是什么原因。
...全文
188 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,399

社区成员

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

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