错误 ADO->RecordSet->AppendChunk 在此环境中不允许操作
在数据库中找到对应的记录,然后修改此记录,需要存一些二进制信息。
但是运行到AppendChunk处就抛出了异常。Code:800A0C93 在此环境中不允许操作。
大家帮忙看看,谢谢!
BOOL CXxDb::Func(LPPRODREGCODE lpPrc, LPBYTE lpCalData, int iCalLen)
{
if (!m_pConnection)
return FALSE;
if (m_pConnection->State != adStateOpen)
return FALSE;
if (!lpCalData)
return FALSE;
BOOL bRet = FALSE;
CString strSql, strTime;
SYSTEMTIME st;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
_RecordsetPtr pRecordset = NULL;
pRecordset .CreateInstance(__uuidof(Recordset));
try
{
strSql = "SELECT * FROM imeitb WHERE mpt = '";
strSql += lpPrc->MPTCode;
strSql += "'";
_bstr_t bstr = strSql;
pRecordset->Open(bstr, m_pConnection.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
if (!pRecordset->adoEOF)
{
pRecordset->PutCollect("used", 1);
GetLocalTime(&st);
strTime.Format(TEXT("%04d-%02d-%02d %02d:%02d:%02d"), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
pRecordset->PutCollect("usetime", strTime.GetBuffer());
// save cal data
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = iCalLen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < iCalLen; i++)
SafeArrayPutElement (psa, &i, lpCalData + i);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
pRecordset->GetFields()->GetItem("caldata")->AppendChunk(varBLOB); // <<<<<<<<-----------这里抛出了异常
SafeArrayDestroy(psa);
pRecordset->Update();
bRet = TRUE;
}
pRecordset->Close();
pRecordset = NULL;
}
catch (_com_error &e)
{
ShowProviderError();
ShowComError(e);
}
return bRet;
}