我有一功能是对数据库连续做出操作如下:
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语句都已在方法里面写好了,希望有朋友能帮下我告诉我应该怎么做
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语句都已在方法里面写好了,希望有朋友能帮下我告诉我应该怎么做
conn.setAutoCommit(false);
try{
操作1.
操作2.
操作3.
操作4.
conn.commit();
}catch(){
回滚
}
finally{
关闭连接之类的。
}
而最好办法的就是用spring来管理事务