代码如下:
char *pBuf = m_pBMPBuffer;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
_RecordsetPtr    pRecordset;
CString          strSQL;
strSQL.Format("SELECT * FROM JOB_TASK ");
pRecordset.CreateInstance(__uuidof(Recordset));try
{
        pRecordset->Open(_bstr_t(strSQL), theApp.m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
pRecordset->AddNew();
pRecordset->PutCollect("TaskName",_variant_t("asdf"));  
pRecordset->PutCollect("CID",_variant_t((long)111111)); }
catch(_com_error e)///捕捉异常
{
AfxMessageBox("读取数据库失败!");///显示错误信息
}
if(pBuf)
{    
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = m_nFileLen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < (long)m_nFileLen; i++)
SafeArrayPutElement (psa, &i, pBuf++);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
pRecordset->GetFields()->GetItem("UPFILE")->AppendChunk((_variant_t)varBLOB);
}
           
        pRecordset->Update();
        pRecordset->Close();其他都没报错,就是执行到pRecordset->Update();时报错,另外为什么pRecordset提示中没有Edit()这个方法?

解决方案 »

  1.   

    BLOB不是这么添加的,你哪个字段是BLOB?
      

  2.   

    应该使用DBMS_LOB来操作CLOB,BLOB
      

  3.   

    UPFILE字段是BLOB类型,还有存入后又应该怎么取出来?
      

  4.   

    DBMS_LOB.READ (
    lob_loc IN BLOB,
    amount IN OUT NOCOPY BINARY_INTEGER,
    offset IN INTEGER,
    buffer OUT RAW);
      

  5.   

    我在表中添加了两个BLOB类型的字段UPFILE,DOWNFILE ,其中UPFILE字段在前,保存文件时都没问题,但是取出来时发现UPFILE中的可以正常取出,但是DOWNFILE 中用pRecordset->GetFields()->GetItem("DOWNFILE")->ActualSize取得的长度始终为0,请教是什么原因?