为什么说在事务中不能存在此游标类型的多记录集?
代码片段如下:
_RecordsetPtr pRecordset;
pConnection->BeginTrans();
HRESULT hr;
try
{
hr = pRecordset.CreateInstance("ADODB.Recordset");
if(FAILED(hr))
throw _com_error(hr);
CString sql = "select * from BANK_USER where MOBILENO='";
sql += CString(m_stActConReq.MobileNo)+"' and BANKID='";
sql += CString(m_stActConReq.BankID)+"'";
pRecordset->Open(_variant_t(sql),_variant_t((IDispatch *) pConnection,true), adOpenStatic,
adLockOptimistic, adCmdText);
if(pRecordset->RecordCount != 0)
{
pRecordset->Close();
pRecordset->Open(_variant_t("BANK_USER"),_variant_t((IDispatch *)pConnection,true), adOpenKeyset,
adLockOptimistic, adCmdTable);
pRecordset->AddNew();
pRecordset->Fields->GetItem("MOBILENO")->Value = _variant_t(m_stActConReq.MobileNo);
pRecordset->Fields->GetItem("BANKID")->Value = _variant_t(m_stActConReq.BankID);
pRecordset->Fields->GetItem("AVLFLAG")->Value = _variant_t("D");
pRecordset->Fields->GetItem("OPENTIME")->Value = _variant_t(CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S").GetBuffer(0));
pRecordset->Fields->GetItem("LASTTIME")->Value = _variant_t(CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S").GetBuffer(0));
pRecordset->Update();
}
catch{_com_error &e)
AddListMsg("错误信息 ———— 处理挂接错误",0,true);
AfxMessageBox((char *)e.Description());
pConnection->RollbackTrans();
if(pRecordset->State)
pRecordset->Close();
strcpy(m_stActConRsp.RespCode,"11");
strcpy(m_stActConRsp.RespMsg,"处理挂接失败");
memcpy(Buf,&m_stActConRsp,sizeof(STBK_UserRegRsp));//回复Bank的信息写到交换缓冲区中
return ;
}