起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2478|回复: 9

[结贴] wex5中多表事务

[复制链接]

31

主题

142

帖子

1382

积分

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
发表于 2017-2-17 18:03:37 | 显示全部楼层 |阅读模式
多表插入,一个失败,全部回滚,求解,代码如下

                try {
                        conn = context.getConnection("test");
                        conn.setAutoCommit(false);
                       
                        sql = "INSERT INTO AAA;";
                        pstmt = conn.prepareStatement(sql);
                        // 执行SQL
                        pstmt.execute();
                       
                        sql = "INSERT INTO BBBB;";
                        pstmt = conn.prepareStatement(sql);
                        // 执行SQL
                        pstmt.execute();

                        conn.commit();
                       
                        result.put("code", "OK");
                       
                        return result;
              }catch(SQLException e){
                        conn.rollback();
                        throw e;
                } finally {
                        if (conn != null) {
                                conn.close();
                        }
                }

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2017-2-17 18:12:36 | 显示全部楼层
全部回滚?  插入完没保存吗?
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2017-2-18 08:28:42 | 显示全部楼层
可以看看起步给出的主从保存案例呀


  1.         private static void saveMasterDetail(ServletRequest request, ServletResponse response) throws ParseException, SQLException, NamingException {
  2.                 // 参数序列化
  3.                 JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));
  4.                 // 获取参数
  5.                 JSONObject userData = params.getJSONObject("userData");
  6.                 JSONObject orderData = params.getJSONObject("orderData");

  7.                 // 转换Table
  8.                 Table userTable = Transform.jsonToTable(userData);
  9.                 Table orderTable = Transform.jsonToTable(orderData);

  10.                 Connection conn = Util.getConnection(DATASOURCE_TAKEOUT);
  11.                 try {
  12.                         conn.setAutoCommit(false);
  13.                         try {
  14.                                 // 排除不能保存的列
  15.                                 Collection<String> userColumns = userTable.getColumnNames();
  16.                                 userColumns.remove("orderCount");

  17.                                 // 一个事务内同时保存多张表
  18.                                 Util.saveData(conn, userTable, TABLE_TAKEOUT_USER, userColumns);
  19.                                 Util.saveData(conn, orderTable, TABLE_TAKEOUT_ORDER);
  20.                                 
  21.                                 conn.commit();
  22.                         } catch (SQLException e) {
  23.                                 conn.rollback();
  24.                                 throw e;
  25.                         }
  26.                 } finally {
  27.                         conn.close();
  28.                 }
  29.         }
  30.         
复制代码
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

31

主题

142

帖子

1382

积分

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
 楼主| 发表于 2017-2-19 11:30:13 | 显示全部楼层
半导体 发表于 2017-2-17 18:12
全部回滚?  插入完没保存吗?

不是的,就是我想要一个表插入失败,全部回滚,
回复 支持 反对

使用道具 举报

31

主题

142

帖子

1382

积分

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
 楼主| 发表于 2017-2-19 11:30:58 | 显示全部楼层
Masion 发表于 2017-2-18 08:28
可以看看起步给出的主从保存案例呀

我就是这么写的啊,就是没有成功,没有达到回滚的效果,部分还是插入成功了
回复 支持 反对

使用道具 举报

31

主题

142

帖子

1382

积分

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
 楼主| 发表于 2017-2-19 15:18:17 | 显示全部楼层
顶一哈,求解答
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2017-2-20 08:38:40 | 显示全部楼层
huangpp 发表于 2017-2-19 11:30
我就是这么写的啊,就是没有成功,没有达到回滚的效果,部分还是插入成功了 ...

还有这种情况?
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

31

主题

142

帖子

1382

积分

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
 楼主| 发表于 2017-2-20 10:05:25 | 显示全部楼层
Masion 发表于 2017-2-20 08:38
还有这种情况?

对头
回复 支持 反对

使用道具 举报

31

主题

142

帖子

1382

积分

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
 楼主| 发表于 2017-2-27 17:49:17 | 显示全部楼层
结贴
回复

使用道具 举报

62

主题

153

帖子

409

积分

中级会员

Rank: 3Rank: 3

积分
409
QQ
发表于 2018-1-17 09:58:26 | 显示全部楼层
楼主  你这是如何解决的哈
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-25 21:19 , Processed in 0.065774 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表