关于数据库的事务(Transactions)的操作
小弟看书上说:
如果设置数据库的autocommit模式为false,就可以在执行commit()函数前用rollback()来撤销数据库操作,我写了一段测试代码,但是结果是rollback()根本就不管用,具体如下:
测试代码如下(后台数据库是MySQL):
public void useCommit(String table)throws SQLException
{
String sql = "UPDATE "+table+" SET Name='newname' WHERE Uid=5";
boolean f = conn.getAutoCommit();
conn.setAutoCommit(false);//Connection conn;
stmt = conn.createStatement();
System.out.println("before change:");
list(table);//这个函数是用来显示数据库的,也就是一个select语句
stmt.executeUpdate(sql);
System.out.println("after change:");
list(table);
System.out.println("then rollback:");
conn.rollback();
list(table);
conn.setAutoCommit(f);
}
现在的结果是:最后两次显示数据库得到的结果是完全一样的,conn.rollback();好像就没有管用,小弟实在不知道是怎么回事啊?还请各位高手指点指点哈!!!