问答详情
源自:4-2 JDBC连接池之配置并测试dbcp连接

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("转账失败");

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

    }

    }

}

DBCPUtil中的conn没有设置setAutoCommit(true)也没有设置false,和直连数据库一样,

直连数据库回滚成功

这个代码为什么会回滚失效,不起作用

提问者:XKing丶QueenRI 2017-05-18 02:39

个回答

  • Jack_PJ
    2017-05-18 16:03:36

    默认的是自动提交,开始事务的时候必须设置自动提交为false才会回滚