JAVA 里面怎写Oracle的数据库回滚

JAVA 里面怎写Oracle的数据库回滚,第1张

//举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定该删的都删了才行,否则就要回滚,下面是删除方法的例子:public boolean delete(int sID) {//成功删除会返回true

 dbc = new DataBaseConnection()//根据你自己的方式创建数据库的连接

 Connection con = dbc.getConnection()//得到Connection

 try {

con.setAutoCommit(false)// 更改JDBC事务的默认提交方式,默认是true,是自动提交

dbc.executeUpdate("delete from xiao where ID=" + sID)//删除

dbc.executeUpdate("delete from xiao_content where ID=" + sID)//删除

dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID)//删除

con.commit()//提交JDBC事务,如果没问题,这时才真正的删除了

con.setAutoCommit(true)// 恢复JDBC事务的默认提交方式,这是个好习惯

dbc.close()//关闭连接

return true//删除成功

 }

 catch (Exception exc) {

con.rollBack()//回滚JDBC事务,出现异常,为保证数据完整性,此次 *** 作回滚,不删除

exc.printStackTrace()//输出异常信息

dbc.close()//关闭连接

return false//删除失败

 }

}//顺便说一下,java中JDBC的事务管理,跟你用的是什么数据库没关系,用什么数据库都是这样

楼主这个回滚机制,针对的是java的事务管理吧! 事务处理之前必须进行取消自动提交,在默认情况下,所有的数据都是被默认提交上去的,就是说只要一执行更新就提交。

取消自动提交之后,如果最后程序的代码(批处理代码)没有出错,则可以进行人为的手工提交。最后如果程序出现了错误,则应该进行回滚。

瑭锦Tanjurd解释一组业务整体处理的行为叫一个事务。这一组的业务都能成功处理,我们就可以把这个事务提交来保存你已做的行为结果。但如果一组中有任何的差错出现的话,我们就认为这事务不成功,需要回滚来撤消之前的 *** 作。举例:你去银行转账,转账我们有两步吧,从你账户中取出钱再往他账户中加钱。那这两步银行是必须要确保正确无误的进行的。要被看做成一个事务。其中任何一步出错就算是转账失败,但可能你这时是已经从你账户中扣了钱了,又没往他账户里加钱?怎么办算了?你不肯吧。所以银行会事务回滚,不保存你刚才的 *** 作,即恢复到你没转账之前的状态

数据量不大的情况下,使用循环插入,最后全部通过才提交commint。这样,只要中间有出错,全部都会回滚。

如果数据量大,那就每次导入前,先创建一个临时表,先把数据插入到临时表中,catch到异常,就删除临时表。如果没有异常,把临时表中的数据插入到目标表。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6460122.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存