_CommandPtr不能用事务吗???

huis 2008-11-10 11:09:02
执行多个存储过程,当中间出错的时候想回滚!应该怎么写,我google了下说_CommandPtr不能用事务回滚,是这样吗?可能一个过程还好,可是我的是多个一起执行!
...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
一条晚起的虫 2008-11-10
  • 打赏
  • 举报
回复
_ConnectionPtr->BeginTrans(); //开始事务
_ConnectionPtr->CommitTrans(); //提交事务
_ConnectionPtr->RollbackTrans (); //回滚事务
huis 2008-11-10
  • 打赏
  • 举报
回复
我试了,不能回滚啊,,,用ConnectionPtr的回滚了以后没有效果!
  • 打赏
  • 举报
回复
具体的CommandPtr不知道,没有用过。但_ConnectionPtr是完全可以执行用事操作的,当然也可以执行存储过程了。
huis 2008-11-10
  • 打赏
  • 举报
回复
不要沉啊,,,没有人知道吗????
sunxuehui 2008-11-10
  • 打赏
  • 举报
回复
如果你只是想添加数据的话就用addnew吧!
_ConnectionPtr->BeginTrans(); //开始事务
_RecordsetPtr->AddNew();

_RecordsetPtr->Update();

_ConnectionPtr->CommitTrans(); //提交事务
_ConnectionPtr->RollbackTrans (); //回滚事务
shakaqrj 2008-11-10
  • 打赏
  • 举报
回复
你确定程序进入到rollback了吗?
huis 2008-11-10
  • 打赏
  • 举报
回复

CIniInfo m_Ini;
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open(m_Ini.m_sConnectSql, "", "", adModeUnknown);
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandType = adCmdStoredProc;
_ParameterPtr m_pParam;
m_pCommand->CommandText=_bstr_t("UP_CA_TASK_LIST_ADD");
m_pConnection->BeginTrans();
_bstr_t BATCH_ID=_bstr_t(newGUID());
list<TaskListParam*>::iterator listparam=taskParams.begin();
try
{
while (listparam!=taskParams.end())
{

m_pParam = m_pCommand->CreateParameter("OUT_VAR_in",adVarChar, adParamInput,4000, (*listparam)->outVar);
m_pCommand->Parameters->Append(m_pParam) ;

m_pParam = m_pCommand->CreateParameter("OUT_EXPRESSION_in",adVarChar, adParamInput,4000,(*listparam)->outExpression);
m_pCommand->Parameters->Append(m_pParam) ;
m_pParam = m_pCommand->CreateParameter("LOCAL_VAR_in",adVarChar, adParamInput,4000,(*listparam)->localVer);
m_pCommand->Parameters->Append(m_pParam) ;
m_pParam = m_pCommand->CreateParameter("GROUP_ID_in",adVarChar, adParamInput,4000,(*listparam)->treeGuid);
m_pCommand->Parameters->Append(m_pParam) ;
m_pParam = m_pCommand->CreateParameter("INS_GUID_in",adVarChar, adParamInput,4000,(*listparam)->insGuid);
m_pCommand->Parameters->Append(m_pParam) ;
m_pParam = m_pCommand->CreateParameter("CM_ID_in",adVarChar, adParamInput,4000,(*listparam)->cmId);
m_pCommand->Parameters->Append(m_pParam) ;

m_pParam = m_pCommand->CreateParameter("TL_TIME_in",adDate, adParamInput,sizeof(DATE),_variant_t((*listparam)->caltime));//_variant_t(tlTime)
m_pCommand->Parameters->Append(m_pParam) ;
m_pParam = m_pCommand->CreateParameter("CHECK_OBJ_ID_in",adVarChar, adParamInput,4000,(*listparam)->objGuid);
m_pCommand->Parameters->Append(m_pParam) ;
m_pParam = m_pCommand->CreateParameter("BATCH_ID_in",adVarChar, adParamInput,4000,BATCH_ID);
m_pCommand->Parameters->Append(m_pParam) ;
//Connect();


m_pCommand->Execute(NULL, NULL, adCmdStoredProc);


listparam++;
}
m_pConnection->CommitTrans();
}
catch (...)
{
m_pConnection->RollbackTrans();
}
huis 2008-11-10
  • 打赏
  • 举报
回复
我是这样做的,可是不行啊!RollbackTrans 的时候数据还是插入了!
贪玩的老鼠 2008-11-10
  • 打赏
  • 举报
回复
try{
_ConnectionPtr->BeginTrans(); //开始事务

//用_CommandPtr对象执行多个存储过程
_ConnectionPtr->CommitTrans(); //提交事务
}
catch()
{
_ConnectionPtr->RollbackTrans (); //回滚事务
}

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧