public void insertLyxx(List list,Connection con){
try {
String insertBdyyfxxSQL = "insert into qqdd_lyxx values(?,?,?,?)";
con = DBUtil.getConnection(dbInfo);
con.setAutoCommit(false);
ps = con.prepareStatement(insertBdyyfxxSQL);
if(!list.isEmpty()){
for(int i=0;i<list.size();i++){
Lyxx lyxx = (Lyxx) list.get(i);
System.out.println("lyxxDao="+lyxx.getLyxx_bh()+":"+lyxx.getFwfid()+":"+lyxx.getDdzxid()+":"+lyxx.getBz());
ps.setString(1, lyxx.getLyxx_bh());
ps.setString(2, lyxx.getFwfid());
ps.setString(3, lyxx.getDdzxid());
ps.setString(4, lyxx.getBz());
ps.executeUpdate();
}
}
con.commit();
} catch (SQLException e) {
try {
con.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}代码如此,我试了,抛异常后没有回滚,怎么回事啊?请求指点!

解决方案 »

  1.   

    catch (Exception e) {
       System.out.println("开始回滚");
       con.rollback();
    }
    这样试试
      

  2.   

    我的数据库是MySQL,怎么查看MySQL是否支持事务啊??
      

  3.   

    mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
    最常使用的2种存储引擎:
    1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
    2.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
      

  4.   

    mysql好像有两种,一个有事务的,一个没事务,在安装时设置的吧
      

  5.   


    我看了,我的MySQL是MyISAM的,这是不是不支持事务啊??如何改成InnoDB啊??
      

  6.   

    我的MySQL是绿色版的,所以开始没设置啊!怎么设置成InnoDB啊?
      

  7.   

    修改配置文件my.ini 我将my-small.ini另存为my.ini,在[mysqld]最后添加为上default-storage-engine=InnoDB,重启服务,数据库默认的引擎修改为InnoDB
      

  8.   

    在建表的时候指定或者建完表修改--建表的时候指定   
    create table mytbl(   
        id int primary key,   
        name varchar(50)   
    )type=MyISAM;   
      
    --建完表后修改   
    alter table mytbl2 type = InnoDB;   
      
      
    --查看修改结果(mytest为表所在的database名字)   
    show table status from mytest; 
      

  9.   

    mysql> begin; 
    Query OK, 0 rows affected (0.00 sec) mysql> insert into article values(1,'z'); 
    Query OK, 1 row affected (0.00 sec) mysql> select * from article; 
    +------+-------+ 
    | id   | title | 
    +------+-------+ 
    |    1 | z     | 
    +------+-------+ 
    1 row in set (0.00 sec) mysql> rollback; 
    Query OK, 0 rows affected (0.05 sec) mysql> select * from article; 
    Empty set (0.00 sec)
    这个是mysql测试事务的例子  改好了 你可以试一下
      

  10.   

    是这样的,我的MySQL是绿色版的,就一个执行文件,我是用navicat来操作MySQL的,我用show engines 查看我的innodb是disable的,我用alter table lyxx type = InnoDB;执行了,但是没有改变啊,还是MyISAM的。这样改怎么办呢?? 
      

  11.   

    Mysql绿色版要不进上面的链接 重新下一个  我调试了 这个可以
      

  12.   

    呵呵 我在这里不好上QQ 有限制的你可以在这个里面M我 我有空的在上这个网页的 不进去转转 我会带着无聊 还可以学习学习大家的新技术  心得体会呢。。