事务的操作

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

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

默认情况下,数据库处于自动提交模式。每个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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值