为了账号安全,请及时绑定邮箱和手机立即绑定

使用JDBC事务管理,没有效果

我使用的JDBC事务管理,为什么运行的结果跟没有使用结果相同

//有事务
 public String transaction(Account from,Account to,Double amount) throws SQLException {
  
  Connection conn=DBUtil.getConn();
  conn.setAutoCommit(false);
  
  try {
   AccountDao accountDao=new AccountDao();
   TransactionDao transDao=new TransactionDao();
   
   //客户付钱
   from.setAmount(from.getAmount()-amount);
   accountDao.update(from);
   
   String a=null;
   a.split("1");
   
   //银行收钱
   to.setAmount(to.getAmount()+amount);
   accountDao.update(to);
   
   //添加交易信息
   Transaction trans=new Transaction();
   
   trans.setSource_account(from.getAccount());
   trans.setDestination_account(to.getAccount());
   trans.setAmount(amount);
   trans.setSource_id(from.getId());
   trans.setDestination_id(to.getId());
   
   transDao.add(trans);
   conn.commit();
   
   return "success";
  } catch (Exception e) {
   // TODO Auto-generated catch block
   conn.rollback();
   e.printStackTrace();
   return "fail"; 
  }
  
 }

正在回答

3 回答

两个都是有事务的,添加交易信息那里

0 回复 有任何疑惑可以回复我~

//没有事务
 public String trans(Account from,Account to,Double amount) throws Exception{
  AccountDao accountDao=new AccountDao();
  TransactionDao transDao=new TransactionDao();
  
  //客户付钱
  from.setAmount(from.getAmount()-amount);
  accountDao.update(from);
  
  //客户付了钱,银行没有收到钱
//  String a=null;
//  a.split("1");

  
  //银行收钱
  to.setAmount(to.getAmount()+amount);
  accountDao.update(to);
  
  //添加交易信息
  Transaction trans=new Transaction();
  
  trans.setSource_account(from.getAccount());
  trans.setDestination_account(to.getAccount());
  trans.setAmount(amount);
  trans.setSource_id(from.getId());
  trans.setDestination_id(to.getId());
  
  transDao.add(trans);
  
  return "success"; 
 }

这是没有事务的,我的mysql引擎也是InnoDB的

0 回复 有任何疑惑可以回复我~

你未使用事务的代码是什么?


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

使用JDBC事务管理,没有效果

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信