dbcp事務回滾失效
public class TranceByDBCP {
public TranceByDBCP(User from,User to,Double amount){
DBCPUtil db=new DBCPUtil();
Connection conn=db.getConn();
try {
conn.setAutoCommit(false);
} catch (SQLException e2) {
e2.printStackTrace();
}
? ? try{
? ? UserDaoActionByDBCP uda=new UserDaoActionByDBCP();
? ? TradeDaoActionByDBCP tda=new TradeDaoActionByDBCP();
? ? from.setMoney(from.getMoney()-amount);
? ? uda.update(from);
? ? String s=null;
? ? s.split("1");
? ? to.setMoney(to.getMoney()+amount);
? ? uda.update(to);
? ? Trade trade=new Trade();
? ? trade.setFrom_id(from.getId());
? ? trade.setFrom_name(from.getName());
? ? trade.setTo_id(to.getId());
? ? trade.setTo_name(to.getName());
? ? trade.setAmount(amount);
? ? tda.add(trade);
conn.commit();
? ? System.out.println("交易成功");
? ? }catch(Exception e){
? ? try {
conn.rollback();
System.out.println("轉(zhuǎn)賬失敗");
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
? ? }
? ? }
}
DBCPUtil中的conn沒有設置setAutoCommit(true)也沒有設置false,和直連數(shù)據(jù)庫一樣,
直連數(shù)據(jù)庫回滾成功
這個代碼為什么會回滾失效,不起作用
2017-05-18
默認的是自動提交,開始事務的時候必須設置自動提交為false才會回滾