myConn.commit();
myConn.setAutoCommit(true);这两句去掉,我试过行了,但不知道为什么

解决方案 »

  1.   

    不过我没在开始时加
    myConn = DAOFactory.getInstance().getConnection();
    myConn.setAutoCommit(false);我用的是 Mysql 的接口
      

  2.   

    我认为executeBatch()他本身就用了事务管理!
    你有没试过,假如一条语句没通过,其他的都没执行呢!
    所以你用了这个方法就不用担心数据的不一致性了!
    也不用操心事务了
      

  3.   

    executeBatch(); 不需要再设置 myConn.commit()你可以  这样写int[] n = myStmt.executeBatch();如果批处理中的某个命令无法正确执行,则 executeBatch() 将抛出 BatchUpdateException。可以调用 BatchUpdateException.getUpdateCounts() 方法来为批处理中成功执行的命令返回更新计数的整型数组。因为当有第一个命令返回错误时,myStmt.executeBatch() 就中止,而且这些命令是依据它们在批处理中的添加顺序而执行的。所以如果 BatchUpdateException.getUpdateCounts() 所返回的数组包含 N 个元素,这就意味着在调用 executeBatch() 时批处理中的前 N 个命令被成功执行。