系统是用java写的,我写程序时忘了写 conx.commit(),但执行时没有报错,并且数据还是被删除了,这是怎么回事?Connection conx=cons.Connect();
            Statement stmt=conx.createStatement();
            conx.setAutoCommit(false);
            stmt.executeUpdate(strSql1);
            stmt.executeUpdate(strSql2);
            stmt.executeUpdate(strSql3);
            stmt.executeUpdate(strSql4);
            stmt.executeUpdate(strSql5);
            stmt.executeUpdate(strSql6);
            stmt.executeUpdate(strSql7);
            stmt.executeUpdate(strSql);
            stmt.close();
            conx.setAutoCommit(true);
            conx.close();

解决方案 »

  1.   

    conx.setAutoCommit(true);起了作用。
      

  2.   

               conx.setAutoCommit(true);
               conx.close();这两句都会执行COMMITconx.close 正常关闭会话,也是隐式的commit
      

  3.   


    Connection conx=cons.Connect();
      Statement stmt=conx.createStatement();
      conx.setAutoCommit(false);
      stmt.executeUpdate(strSql1);
      stmt.executeUpdate(strSql2);
      stmt.executeUpdate(strSql3);
      stmt.executeUpdate(strSql4);
      stmt.executeUpdate(strSql5);
      stmt.executeUpdate(strSql6);
      stmt.executeUpdate(strSql7);
      stmt.executeUpdate(strSql);
      stmt.close();
      conx.setAutoCommit(true);
      conx.close();
    貌似用PreparedStatement安全性上好一点,LZ用的是mysql数据库么,这样写是为了保持事务一致?
      

  4.   

    也可以修改postgresql.conf配置文件,来达到全局被修改的效果
    edb_stmt_level_tx的值
    参考:
    http://www.enterprisedb.com/docs/en/8.3R2/oracompat/EnterpriseDB_OraCompat_8.3-04.htm#P79_7676