mysql preparedstatement 批量update,PreparedStatement的批量更新的有关问题(只执行最后一条插入语句)...

PreparedStatement的批量更新的问题(只执行最后一条插入语句)

本帖最后由 zhrubin 于 2014-07-07 10:47:41 编辑

后台是MySql,大家有没有碰到添加了很多addBatch,但是最终commit完,只

执行最后一条的情况。

conn = BaseDaoLocalImpl.getBase().getConn();

conn.setAutoCommit(false);

sql = "insert into course_charge_standard (big_num,course_name,course_level,course_type,course_std,charge_type," +//6列

"start_date,course_object,course_info,course_memo,branch_num) values(?,?,?,?,?,?,?,?,?,?,?)";//5列

for(int i =0; i

Course_charge_standard ccs = ccsList.get(i);

pstmt = conn.prepareStatement(sql);

pstmt.setLong(1, ccs.getBig_num());

pstmt.setString(2, ccs.getCourse_name());

pstmt.setString(3, ccs.getCourse_level());

pstmt.setString(4,ccs.getCourse_type());

pstmt.setBigDecimal(5, ccs.getCourse_std());

pstmt.setString(6, ccs.getCharge_type());

pstmt.setString(7, ccs.getStart_date());

pstmt.setString(8, ccs.getCourse_object());

pstmt.setString(9, ccs.getCourse_info());

pstmt.setString(10, ccs.getCourse_memo());

pstmt.setInt(11, ccs.getBranch_num());

pstmt.addBatch();

}

int[] executeBatch = pstmt.executeBatch();//这里只返回了1

for (int j : executeBatch) {

System.out.println(" j="+j);

}

conn.commit();

但是如果在

pstmt.addBatch();后面紧跟一句 pstmt.executeBatch();,即每addBatch一次,就executeBatch一次,就没有问题。

------解决方案--------------------

把pstmt = conn.prepareStatement(sql);移到for 循环外面。

------解决方案--------------------

pstmt = conn.prepareStatement(sql);  这个 问题了, 你放循环外面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值