有可能myConn.rollback();本身执行失败了,多打点log,仔细看看每一步执行的结果

解决方案 »

  1.   

    myConn.commit();
    之后能不能rollback?
      

  2.   

    myConn.commit()不需要rollback()了吧
    因为前面myConn.setAutoCommit(false)就代表事务回滚了
      

  3.   

    dmhorse(dmhorse)大哥说的对,你已经提交了再rollback也没用了。 你要再最后的finally再commit。
      

  4.   

    可是在循环里ad1.add();语句出现异常,myConn.commit();不是就不执行了吗?
      

  5.   

    楼上的各位不要误人子弟,
    第一,既然已经走到rollback,说明前面已经出异常了,所以commit是肯定不会被执行到的.
    第二,怎么可能在finally里进行commit,那不是任务情况都要commit了,那还要rollback来做什么?
      

  6.   

    create table p_test(
             cno       int not null auto_increment,
             name      varchar(50) not null,
             index index_name_idx01(name),         
             primary key(cno),
             unique key(name)
     ) TYPE=INNODB;
               DBConnection db = new paytv.DBConnection();
               if(!db.CmdConnectDB())
               {
                   System.out.println("Exiting,no connection");
                   return;
               }
               Connection con = db.Cmdgetcon();
               con.setAutoCommit(false);
               try
               {
                   String sql ="insert into p_test values(null,'abc')";
                   java.sql.Statement st = con.createStatement();
                   System.out.println("Execute insert duplicated row");
                   st.executeUpdate(sql);
                   st.executeUpdate(sql);
                   con.commit();
               }
               catch(java.sql.SQLException e)
               {
                   System.out.println("Sql error,rollbacking" + e.getMessage());
                   con.rollback();
               }
               catch(Exception e)
               {
                   System.out.println("Error,rollbacking" + e.getMessage());
                   con.rollback();
               }
               finally
               {
                   //con.setAutoCommit(true);
                   db.CmdCloseDB();
               }If setAutoCommit(true),it would generate 1 record.
    If not,nothing happen.
      

  7.   

    Have u try run the sql statment in informix database?
    Test the rollback function abnormal or not.May u paste the remained code here?
      

  8.   

    程序功能是从文件里一行一行读记录,将其插入数据库。文件里有4行,最后一行故意写了一个错误记录,不能插入数据库。结果执行时,插入第4行时出现了异常,rollback也执行了,可前3行记录还是插入了数据库里,而不是一起被rollback掉。
      

  9.   

    程序就这么多,这是在Expresso框架下写的程序。Tomcat+INFORMIX