使用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";?
??}
??
?}
2017-09-06
兩個都是有事務的,添加交易信息那里
2017-03-31
//沒有事務
?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的
2017-03-30
你未使用事務的代碼是什么?