可能是因为BATCH只能对应一个STMT,而不是多个STMT,你每次ADDBATCH时都对应了新的STMT,所以最后只能执行最后那个,我以前也碰到你的这种情况,我的办法是没有重写ADDBATCH与EXCUTEBATCH语句.

解决方案 »

  1.   

    johnsonzhouws() 可否给出你重写的方法?
      

  2.   

    同意 johnsonzhouws()
    你没有必要都封装这两个函数,如果真要封装的话,改一下:
    在运行这两个函数前,先初始化stmt,然后当作它们的参数传进去!
    public void addBatch(Statement stmt,String sql) {
        try {
          stmt.addBatch(sql);
        }
        catch (SQLException ex) {
          System.out.print("aq.Exception" + ex.getMessage());
        }
      }  public void executeBatch(Statement stmt) {
        try {
          stmt.executeBatch();
          conn.setAutoCommit(true);
       }
        catch (SQLException ex) {
          System.out.print("aq.Exception" + ex.getMessage());
        }  }
      

  3.   

    或者直接写成
          conn.setAutoCommit(false);
          stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
          stmt.addBatch(sql);
          ...    //这地方加你要写的其他batch处理
          stmt.executeBatch();
          conn.setAutoCommit(true);