PreparedStatement pstat=(PreparedStatement)stat;
for(int i=0;i<10000;i++){
pstat.setObject(1, "189"+RanNum.generateStringNum(9));
pstat.setObject(2, RanNum.generateMixString(5));
pstat.setObject(3, RanNum.generateStringNum(18));
pstat.setObject(4, Math.abs(rd.nextInt(100)));
pstat.setObject(5, i%2);
pstat.setObject(6, rd.nextInt());
pstat.setObject(7, RanNum.generateString(20));
pstat.executeUpdate();

}
预处理插入语句,本来是插入10000条,但是执行的时候有时候插入几百条就不动了,有时候插入2千来条就不能,
就是没有成功插入1000条,忘高手解答  thank you very much!

解决方案 »

  1.   

    不是远程的全从启一下 以前plsql任务管理器结束的时候有类似情况(不是远程的)
      

  2.   

    为什么不用批处理?                            PreparedStatement pstat=(PreparedStatement)stat;
                                for(int i=0;i<10000;i++){
                                    pstat.setObject(1, "189"+RanNum.generateStringNum(9));
                                    pstat.setObject(2, RanNum.generateMixString(5));
                                    pstat.setObject(3, RanNum.generateStringNum(18));
                                    pstat.setObject(4, Math.abs(rd.nextInt(100)));
                                    pstat.setObject(5, i%2);
                                    pstat.setObject(6, rd.nextInt());
                                    pstat.setObject(7, RanNum.generateString(20));
                                    pstat.addBatch();                        
                                }
                                pstat.executeBatch();
      

  3.   

    我以前也出现过这样的问题是for循环操作数据库太频繁了  每插入一条sleep一会就不会出现这个问题了 
      

  4.   

    数据库服务器内存不足了呗,估计数据库也在同一台服务器上吧。改正做法,每1000条 commit一次。或者找一台强劲的服务器。