请教:如何在java程序中实现数据 *** 作的“回滚”

请教:如何在java程序中实现数据 *** 作的“回滚”,第1张

--事务处理:

begin tran --开始处理数据时,开启事务

--下面是具体的处理语句

insert into 表 values(1)

if @@error<>0 --如果处理语句出错,回滚事务

begin

rollback tran

goto lbexit

end

update 表 set 字段=1

if @@error<>0 --如果处理语句出错,回滚事务

begin

rollback tran

goto lbexit

end

commit tran --所有执行成功,提交事务

lbexit:

JAVA的话,可以在连接对象上启用事务

可以把要执行的四个SQL语句写到同一个List中再调用此方法

你也可以自己写

主要注意

执行sql插入前要取消自动提交

con.setAutoCommit(false)

全部sql语句执行完成后再提交

con.commit()

执行过程抛出异常则回滚

con.rollback()

希望对你有帮助

public

boolean

exeupdate(List<String>

sqls)

throws

SQLException

{

boolean

flag

=

false

openPoolConnection()//创建连接

try

{

//

con.setAutoCommit(false)//取消自动提交

for(int

i=0i<sqls.size()i++)

{

pstmt

=

con.prepareStatement(sqls.get(i))

int

rows

=

pstmt.executeUpdate()

}

flag

=

true

con.commit()//提交

}

catch

(Exception

e)

{

con.rollback()//回滚

e.printStackTrace()

}

finally

{

this.closeAll()//关闭连接

数据集

语句对象

}

return

flag

}

//举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定该删的都删了才行,否则就要回滚,下面是删除方法的例子: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的事务管理,跟你用的是什么数据库没关系,用什么数据库都是这样


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

原文地址:https://54852.com/bake/11725458.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存