我的事务没有con.commit();但是下面的 insert还是没有回滚呢?我直接用con.rollback();,但是还是insert了2条数据到数据库,为什么没有回滚啊?
        
                con.setAutoCommit(false);
         st.executeUpdate("insert account(name,add) values('yusiyuan',123)");
         st.executeUpdate("insert account(name,add) values('xiaoyu',321)");
         con.rollback();
         con.setAutoCommit(true);
mysql数据库中还是插入了2条数据了。

解决方案 »

  1.   

    con.rollback();  ?还是应该  trans.rollback();  ?
      

  2.   

    如果不调用commit()方法,SQL语句不会得到事务确认
      

  3.   

    提交性设置为false的时候数据也会被提交,提交过程中涉及到的表会被锁住,提交或回滚时锁被释放[数据库的事务。
      

  4.   

    你用的什么数据库,只有数据库开启事务模式,才会生效!如果是MYSQL的话,表用InnoDB类型,sql server2000链接字符串加上SelectMethod=Cursor设置为手动事务模式
      

  5.   


      对!你使用mysql数据库的使用想要支持事务,需要将表的类型修改成为InnoDB类型。才能使用事务。
      

  6.   

    如果你使用了navicat 客户端的话,那么在你使用的表上点击设计表,然后再选项中,将表的类型选择InnoDB。
      

  7.   

     先把con的自动提交设为false:con.setAutoCommit(false);
    然后再初始化st:Statement   st   =     con.createStatement()
    最后再适应st执行sql语句:    st.executeUpdate("insert account(name,add) values('xiaoyu',321)");
      con.rollback();可以调整代码如下:con.setAutoCommit(false);
    Statement   st   =     con.createStatement();
    st.executeUpdate("insert account(name,add) values('yusiyuan',123)");
    st.executeUpdate("insert account(name,add) values('xiaoyu',321)");
    con.rollback();