设置数据库事务控制的问题

8 篇文章 0 订阅
3 篇文章 0 订阅

在进行对数据库存储这方面代码编写时如果是分段执行需要注意如果过程中发生错误而没有添加事务控制的话就会发生

一、脏读

    指一个线程中的事务读取到了另外一个线程中未提交的数据

二、不可重复读

    指一个线程中的事务读取到了另外一个线程中提交的UPDATE数据

三、虚度

    指一个线程中的事务读取到了另外一个线程中提交的INSERT数据

这些问题

然后再说一下事务的特性

事务分为

一、原子性

    同一个事务的多条语句是不可分割的

二、一致性

    事务必须让数据的状态从一个一致性状态变换到另一个一致性状态  例如 转账 

三、隔离性

    指在多线程环境中,一个线程的事务不能被其他线程中的事务所打扰

四、持久性

    事务一旦被提交之后就要被永久保存

根据事务的这些特性,如果进行数据库操作的话应该加上事务控制。

进行操作前先开启事务  conn.setAutoCommit(false);

然后进行数据库操作 

数据库操作完毕之后再进行事务结束操作

conn.commit();在这个命令执行之前进行的数据库操作都是更新的缓存而没有去更改具体的数据库。如果没有发生错误就会把事务所做的修改提交到数据库进行修改保存。

如果其中发生异常了

将事务语句放置于try/catch中 如果发生异常在catch中判断是不是由于连接conn为空,如果不是则是语句执行期间出错则需要数据回滚,不能让它修改数据库即conn.rollback();

关于事务 

 

小白理解不当的地方请看到的大神指导

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值