SQL中的事务以及批量更新

1、SQL中的事务指的是将一组SQL语句同时提交,举个例子吧:在银行转账的时候,它的执行过程应该是先把钱取出来,然后再把钱存到另一个账号里面去吧,它的SQL执行过程应该是先DELETE,然后再UPDATE吧,如果在UPDATE的时候突然网络出了问题,其结果会是怎样呢?按照单条语句的提交策略则会因此导致钱没存进去,但是却已经取出来啦,这样的话我相信银行早晚会乱套的。但是,我们可以才去事务的方法去解决,即把DELETE与UPDATE捆绑为一个事物,对它们同时进行提交,如果发生错误就对其进行回滚。这样的话,数据就不会因此而乱套啦。但是,默认情况下,数据库连接处于自动提交模式(autocommit mode),所以我们先得关闭这种自动提交模式,看看下面的例子吧:

conn.setAutoCommit(false);

Statement stat = conn.CreateStatement();

然后任意多次的执行executeUpdate方法:

stat.executeUpdate(command1);

stat.executeUpdate(command2);

stat.executeUpdate(command3);

···

执行所有命令之后,调用commit方法:

conn.commit();

如果出现错误,则回滚:

conn.rollback();

当然,我们可以使用保存点(Save point)来更好的控制回滚操作,这样的话只需返回到保存点,而非事务的开头。如:

Savepoint svpt = conn.setSavepoint();

conn.rollback(svpt);

2、批量更新

批量更新与普通更新的区别前者一次性把所有的语句都更行啦,所使用到的语句如下:

①先把所有的SQL都放入addBatch中,如:stat.addBatch(command);//command为SQL语句

你可以把这个语句放到循环中添加。

②在最后通过更新语句一次性更新,如下:
int[] counts = stat.executeBatch();//为所有已提交的命令返回一个记录数的数组

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值