java中jdbc多表 *** 作如何事物回滚

java中jdbc多表 *** 作如何事物回滚,第1张

可以把要执行的四个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

}

getPreparedStatement(conn,sql,item)

方法是干啥的,贴出来

其实问题很简单

MyLog.e(">>>提交之前<<<")

//在try块内添加事务的提交 *** 作,表示 *** 作无异常,提交事务。

            conn.commit()//此处都没有执行到

            MyLog.e(">>>全部提交了<<<")

} catch (SQLException e) {

isInsertOk = false

MyLog.e(">>>出错,准备rollback<<<")

 try {

上面的那个SQLException e

 换成  Exception e  应该就可以了,

你的setAutoCommit(false)是通过自己写代码设置的还是在TransactionManager.beginTransaction()中设置的?我看描述可能是事务这里封装的有问题或者是你用的有问题。

你搞不明白的话,可以自己去实现事务,那样逻辑比较清晰。

恩 和楼下见解一样,推荐你把TransactionManager去掉,换成 setAutoCommit(false),commit(),rollback() 试试。最原始的总是最容易理解的


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存