error #3105 这个错误怎么出现的?(ADO)
我在一个函数里调用数据库并更新。点击按钮就调用这个函数。问题出现了:如果我点击的间隔比较长,比如一秒,那么没什么问题。但是如果我连续点击的话,就会出现error #3105的错误。我调试了,发现出现问题的一段代码如下:
//--------初始化点名表2----------------------
m_pConnection->BeginTrans();
transCommitFlag = 1; //标识事务开始了
for(i=0; i<count; i++)
{
id = tempList.GetNext(pos);
m_pRecordset->AddNew();
m_pRecordset->PutCollect("userID",_variant_t((long)id));
m_pRecordset->UpdateBatch(adAffectCurrent);
}
//--------结束----------------------
LONG startPosition = (m_pRecordset->GetCollect("ID").ulVal - count);
CTime currentTime = CTime::GetCurrentTime();
//----------initiate rollcallTable1------------
HRESULT hr = m_pRecordset->Close();
m_pRecordset->Open("SELECT * FROM rollcallTable1", _variant_t((IDispatch*)m_pConnection, true),adOpenKeyset,adLockOptimistic,adCmdText);
if(!m_pRecordset->Supports(adAddNew))
{
//如果记录集不支持AddNew
if(m_pRecordset->State == adStateOpen)
m_pRecordset->Close();
rollcallFailed.errInfo = 1;
g_pSendSocket->SendMsg(&rollcallFailed, sizeof(rollcallFailed), *pFromAddr);
return FALSE;
}
m_pRecordset->AddNew();
m_pRecordset->PutCollect("rollcallTime", _variant_t(currentTime.GetTime()));
m_pRecordset->PutCollect("startPosition", _variant_t(startPosition));
m_pRecordset->PutCollect("userNumber", _variant_t(count));
m_pRecordset->PutCollect("commanderID", _variant_t(pRollComd->sourceID));
m_pRecordset->UpdateBatch(adAffectCurrent);
//-----------初始化点名表结束-------------------------------
m_pConnection->CommitTrans(); //提交事务
transCommitFlag = 2; //设置标志位,表明事务已经完成