我有一功能是对数据库连续做出操作如下:
int updState = taskDao.updToFinish(task_id, State);
int updaccount = account.updateAccount(UserName, Money); /*如果已成交,把任务资金转入代办商账户*/
int updCharge = account.comein(Matter, UserName,Matter_, UserName_ ,Money);   /*收入信息*/
if(updState >= 1 && updaccount >= 1 && updCharge >= 1)
{
  message = "任务成功结标!";
  request.setAttribute("message", message);
  request.setAttribute("paths", "taskData.do?method=tofinish&ID=1");
  return mapping.findForward("finishOK");
}
else
{  message = "任务成交失败,请重试!";
  request.setAttribute("message", message);
  request.setAttribute("paths", "taskData.do?method=seltofinish&task_id");
  return mapping.findForward("finishNO");
}
如果其中的第二条出现问题,那第一条已被执行了怎么办啊,我不知道改怎么用MYSQL的事务回滚去解决,因为这里是直接调用了方法,SQL语句都已在方法里面写好了,希望有朋友能帮下我告诉我应该怎么做

解决方案 »

  1.   

    mysql的事务:
    conn.setAutoCommit(false);
    try{
    操作1.
    操作2.
    操作3.
    操作4.
    conn.commit();
    }catch(){
    回滚
    }
    finally{
    关闭连接之类的。
    }
      

  2.   

    ?我的三个sql操作不是在一起的,而是分别调用的三个方法,每个方法都只是一个SQL操作,我贴的代码是在Action里面的,能具体告诉我怎么实现么?
      

  3.   

    对了,我用的只有Struts没用hibernate 
      

  4.   

      不什么不用Hibernate的啊
      

  5.   

    把Connection抽到Action层,再传到dao,就可以在action层管理事务。
    而最好办法的就是用spring来管理事务
      

  6.   

    三个回滚那是不可能的,因为是分开的,如果第一条对了,第二条错了回滚也只能第二条回滚,我已经解决了,把三个sql写在一起了,结贴了