jdbc回滚无法正常工作

时间:2010-10-26 22:00:25

标签: mysql jdbc transactions

我正在使用JDBC(使用mysql)测试java中的回滚,但下面的代码无效。代码的行为就好像我调用了commit()而不是rollback()。有人能告诉我哪里出错了吗?

        Connection conn=null;
    try
    {
    conn = SqlConnectionHandler.getSqlConnection();
    conn.setAutoCommit(false);
    }
    catch(Exception e)
    {
        System.exit(-1);
    }
    String updateString1 = "update files set ownerID=ownerID+1 where globalFileID=2";
    String updateString2 = "update directories set size=size+1 where globalDirID=8";

    try
    {
        Statement statement = conn.createStatement();
        statement.executeUpdate(updateString1);
        statement.executeUpdate(updateString2);
        conn.rollback();
        //conn.commit();
        statement.close();
        SqlConnectionHandler.closeConnection(conn);
    }
    catch(Exception ex)
    {
        System.err.println("SQLException: " + ex.getMessage());
        try
        {
        conn.rollback();
        }
        catch(SQLException e)
        {}
    }
}

1 个答案:

答案 0 :(得分:0)

发现问题herehere。似乎我使用默认存储引擎myISAM,它不支持事务。据报道,将存储引擎更改为InnoDB可以正常工作。