首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

求教JDBC事务控制,为什么没有回滚?该如何解决

2012-02-08 
求教JDBC事务控制,为什么没有回滚?Java codeConnection conn nullPreparedStatement pstmt nulltry

求教JDBC事务控制,为什么没有回滚?

Java code
Connection conn = null;        PreparedStatement pstmt = null;        try {            conn = DriverManager.getConnection(XXX,XXX,XXX);            conn.setAutoCommit(false);            [color=#FF0000]pstmt = conn.prepareStatement("INSERT INTO XXXX");//执行插入操作 1[/color]            pstmt.addBatch();                        //省略中间代码                        [color=#FF0000]pstmt.addBatch(sql1);//执行修改操作 2[/color]                        pstmt.addBatch(sql2);//执行修改操作                        pstmt.addBatch(sql3);//执行修改操作            pstmt.executeBatch();            conn.commit();        } catch (Exception e) {            e.printStackTrace();            try {                if (conn != null){    [color=#FF0000]                conn.rollback();//此处被调用 3[/color]                }            } catch (SQLException e1) {                e1.printStackTrace();            }        }finally{            if(pstmt != null)                try {                    pstmt.close();                } catch (SQLException e) {                    e.printStackTrace();                    pstmt = null;                }            if(conn != null)                try {                    conn.close();                } catch (SQLException e) {                    e.printStackTrace();                    conn = null;                }        }

标记2出错,标记1插入的数据仍然进入数据库,调试跟踪发现标记3处代码被执行并且没有异常,执行了回滚操作,但是为什么数据还是被插入数据库了,求教?

[解决办法]
mysql数据库新表默认不支持事务。
[解决办法]
探讨

引用:

mysql数据库么?
是mysql

[解决办法]
show variables like 'have_%'
看看有没有have_innodb
确定你的表type是InnoDB?
MySQL中只有InnoDB和BDB支持事务

哎,mysql这种免费的东西...好久好久没用了,的确各方面都达不到我的要求诶
现在要么商业应用就用用MSSQL,简单应用就上SQLITE了,这东西还不错
[解决办法]
如果不是批量操作呢?只插一条试试看回不回滚。。如果插一条没问题的话,估计就是批量的问题了,偶没试过。。

热点排行