读书人

事宜的操作

发布时间: 2012-07-05 07:59:17 作者: rapoo

事务的操作
事务是为了确保数据库的完整性。当所有语句都顺利执行后,事务可以提交,否则,如果其中某个语句遇到错误,那么事务将被回滚,就好像没有执行过任何命令一样。

如果将更新语句组合成一个事务,那么事务要么成功执行所有的操作并被提交,要么在中间某个位置发生失败,在这种出现失败的情况下,可以执行回滚操作,
将数据库自动撤销回上次提交事务以来的所有更新操作产生的影响。

默认情况下,数据库处于自动提交模式。每个SQL语句一旦被执行便会被提交给数据库,一旦命令提交,就无法对他进行回滚操作。

一、 事务的回滚
Connection conn = DriverManager.getCommection(url,username,password);

可以使用 conn.setAutoCommit(false);来关闭自动提交。
然后调用Statement stat=conn.createStatement();来创建语句对象。
用stat.executeUpdate(SQL语句);执行sql命令,执行完之后,调用conn.commit()方法,出现错误则调用conn.rollback()进行回滚。


二、 保存点的使用

为了更好的控制事务的回滚操作,我们可以设置保存点(Save point),创建一个保存点意味着稍后只需返回到这个点,而不是整个事务的开头

Connection conn = DriverManager.getCommection(url,username,password);

Statement stat=conn.createStatement();
stat.executeUpdate(SQL语句);
Savepoint svpt= conn.setSavepoint();
stat.executeUpdate(SQL语句);
if(...)
{
conn.rollback(avpt);
}
else
{
conn.commit();
}

这里,我们使用了匿名保存点,也可以给他添加名字如

Savepoint svpt= conn.setSavepoint("savepoint");
当使用一个保存点完成所有操作后,必须释放:
conn.releaseSavepoint(svpt);

读书人网 >其他数据库

热点推荐