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

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,和直连数据库一样,

直连数据库回滚成功

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

正在回答

1 回答

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

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

举报

0/150
提交
取消

dbcp事务回滚失效

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