JDBC入门中,关于事务有几点小疑问。
1、如果没有发生unchecked exception而是断电什么,数据怎么办,还能和MySQL一样下次继续执行?
2、事务直接用在SQL语句里,还是用在Java里好?
3、事务rollback()为什么还要“if(conn!=null&&!conn.isClosed())”判断?
正在回答
同学你好,1、同学是想说,在如下位置中,如果没有发生unchecked exception异常,而是发生了断电,此时数据会发生什么变化吗?
如果是,这些数据并不会存入数据库中,因为事务具有一致性,事务里的 SQL 要么全部执行成功,要么全部执行失败,这里事务中的SQL语句还没有执行完成,所以此时就没有提交,也就不会写入表中。
关于是否还能和MySQL一样下次继续执行,这里并不会在下次继续执行,因为这里sql语句并没有执行完,此时事务并没有提交,所以并不会在数据库中存在记录。
关于断电是对应的操作,同学如果有兴趣可以自己去深入了解一下。
2、建议在java代码中使用事务,因为可能某个功能需要使用不同的业务流程,在java代码中使用事务更加方便。
3、conn!=null-->是不为空的判断,如果conn是空,此时就不能执行close操作,避免出现空指针异常。
isClosed-->是判断是否关闭,如果没有关闭会返回flase,这里是为了防止在finally执行之前已经关闭过conn,所以为了代码的严谨性,在这里做了此判断。所以这里是为了避免conn出现为空或者conn已经关闭,就不用再次执行close操作了。
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星