请问各路大神,Java执行事务应该怎么写呀?小的实在是找了几天也没找到呀,现在是commit时报错:使用分布式事务时无法调用提交,看了所有的SQL执行结果都是1

琴声何来 2020-11-02 10:32:59
如题

public Boolean JdbcUpdate (List<String> sqls, List<Object[]> args) {
Connection conn = null;
PreparedStatement stmt = null;
Boolean res = false;
try {
conn = getDataSource().getConnection();
conn.setAutoCommit(false);
for (int i = 0; i < sqls.size(); i++) {
stmt = conn.prepareStatement(sqls.get(i));
for (int j = 0; j < args.get(i).length; j++) {
stmt.setObject(j + 1, args.get(i)[j]);
}
int res1 = 0;
res1 = stmt.executeUpdate();
res1 = res1;
}
conn.commit();
res = true;
}
catch(Exception e){……}
}
...全文
6526 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2020-12-31
  • 打赏
  • 举报
回复
引用 10 楼 琴声何来 的回复:
[quote=引用 9 楼 maradona1984 的回复:]信息太少,我看这项目应该不是练手项目,最好找同事问问. 一般事务都是不需要你去commit的,现在基本都是托管给spring来控制的,看你的错误貌似不是用spring的. 还涉及到struts,服务器用的weblogic,估计是家大公司的老项目,你也许被外包过去的? 如果是用到ejb之类的东西,也是不需要commit的,事务都是托管的,你直接点到commit方法里怕是就只有一行代码抛异常的代码
非常感谢,我看项目源代码时,发现很多地方都没有使用事务,于是就模拟这写了这么个方法,这个项目有点复杂,里面也有spring,也有ejb,(我是个java新手),我再研究研究怎么个托管法[/quote] 托管的意思是上层已经处理了,你不需要考虑事务的问题了
琴声何来 2020-12-31
  • 打赏
  • 举报
回复
引用 9 楼 maradona1984 的回复:
信息太少,我看这项目应该不是练手项目,最好找同事问问.

一般事务都是不需要你去commit的,现在基本都是托管给spring来控制的,看你的错误貌似不是用spring的.

还涉及到struts,服务器用的weblogic,估计是家大公司的老项目,你也许被外包过去的?
如果是用到ejb之类的东西,也是不需要commit的,事务都是托管的,你直接点到commit方法里怕是就只有一行代码抛异常的代码

非常感谢,我看项目源代码时,发现很多地方都没有使用事务,于是就模拟这写了这么个方法,这个项目有点复杂,里面也有spring,也有ejb,(我是个java新手),我再研究研究怎么个托管法
maradona1984 2020-12-30
  • 打赏
  • 举报
回复
信息太少,我看这项目应该不是练手项目,最好找同事问问. 一般事务都是不需要你去commit的,现在基本都是托管给spring来控制的,看你的错误貌似不是用spring的. 还涉及到struts,服务器用的weblogic,估计是家大公司的老项目,你也许被外包过去的? 如果是用到ejb之类的东西,也是不需要commit的,事务都是托管的,你直接点到commit方法里怕是就只有一行代码抛异常的代码
琴声何来 2020-12-30
  • 打赏
  • 举报
回复
再挣扎一下下
琴声何来 2020-11-03
  • 打赏
  • 举报
回复

错误中写着 Cannot call commit when using distributed transactions
KeepSayingNo 2020-11-03
  • 打赏
  • 举报
回复
你这个没用到事务啊,和事务有什么关系,把报错发出来
我只爱钱 2020-11-02
  • 打赏
  • 举报
回复
你调用一下事务的开启方法
琴声何来 2020-11-02
  • 打赏
  • 举报
回复
看了好多前人的经验都是用的不带参数的sql,不知是不是带了参数就不能这么写了
琴声何来 2020-11-02
  • 打赏
  • 举报
回复
引用 1 楼 太菜了12138 的回复:
你事物开启了吗

我看大家说的事务是默认开启的,写con.setAutoCommit(false)就可以了呀
我只爱钱 2020-11-02
  • 打赏
  • 举报
回复
你事物开启了吗

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧