public void test(){
try {
con.setAutoCommit(false);
PreparedStatement pst = con.prepareStatement("insert into t_teacher (name) values ('dddd')");
System.out.println(con.getAutoCommit());
pst.executeUpdate();
Statement st = con.createStatement();
st.executeUpdate("update t_teac7her set age=1101");
con.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
try {
con.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}con 为一个Connection 的对象,
在执行第二条 sql 语句时抛异常了,为什么第一条sql语句提交了?
为什么事务失去了作用?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【andongoop】截止到2008-06-24 14:55:19的历史汇总数据(不包括此帖):
    发帖数:8                  发帖分:120                
    结贴数:5                  结贴分:80                 
    未结数:3                  未结分:40                 
    结贴率:62.50 %            结分率:66.67 %            
    楼主加油
      

  2.   

    我用Mysql数据库,这和数据库有关吗?
    我是要在java程序里控制事务呀
      

  3.   

    我用ORACLE测试过了,你的代码没有问题。
    进行事务回滚了。所以不知道你那边到底是数据库的问题,还是代码有其他提交的问题。
      

  4.   

    因为有些数据库,处理部分操作的时候不支持回滚。
    比如ORACLE的表机构调整处理。
      

  5.   

    MYSQL支持事务,表的类型要为innodb