try {
        stmt = connect.createStatement();
        for(int i=0;i<sqls.size();i++){
                //count++;
                //if(count < 100){
                stmt.addBatch((String)sqls.get(i));
                }
                //else{
                stmt.executeBatch();
                //    count = 0;
                /* }
                 }
    if(count > 00){
         stmt.executeBatch();
    }
}*/这个批处理一次有500多条记录要更新,有修改和删除语句,可是发现只执行了一部分语句,为什么?

解决方案 »

  1.   

    如果的数据更新没有冲突的话,就没有问题. 如果有冲突,比如1,更新ID   =   1, 
    2,更新ID <=2 这样看起来就只执行了2而看不到1的结果.
      

  2.   

    如果是这样呢:
    update table set value = 100 where id = 1
    update table set value = 200 where id = 1
    都加到批处理里面,最终的结果是什么?是这两条会按随机的顺序执行吗?
      

  3.   

    我要实现的功能是这样的:
    一个数据库有一个A表,首先从这个表里查出一些记录,比如几百条,当然,有一个字段比如标识codeCol 列可能有重复
    然后要把这些记录更新到另一个数据库的一个B表中,两个表中要更新的字段是一样的,更新方式如下:
    如果A表的codeCol记录在B表中有,则更新B表中该记录,若B表中没有,则向B表中插入该记录
    而我的程序中可以手工在B表中插入记录
    记录为val1, val2, val3, codeCol,val4  这个codeCol 是IP地址,可能的语句有 insert into tableTab value(val1,val2, val3, codeCol, val4)
    update tableTab set val='a',val2='b', val3='c',val4='d' where codeCol = '1'
    update tableTab set val='a',val2='b', val3='c',val4='d' where codeCol = '2'
    update tableTab set val='a',val2='b', val3='c',val4='d' where codeCol = '3'
    update tableTab set val='aa',val2='bb', val3='cc',val4='dd' where codeCol = '1'
    这个没有问题吧,向第二条和第五条是按顺序执行呢,还是随机执行呢?