1、不能通过AddNew来向数据库中添加数据,一添加数据就出现抛出异常。
2、不能通过打开Recordset来查询BLOB类型的数据
_ConnectionPtr pConn;
_RecordsetPtr  pRs;HRESULT hr;
int nID;
byte *pPhoto;
TRY
{
    hr = pConn.CreateInstance(__uuidof(Connection));
    if (FALIED(hr))
    {
        return;
    }
    
    hr = pRs.CreateInstance(__uuidof(Recordset));
    if (FAILED(hr))
    {
        pConn.Release();
        return;
     }    pConn->Open("Provider=MSDAORA;Data Source=CAS;USER Id=ORACLECY;Password=123;","","",adModeUnkown);
      pRs->Open("SELECT ID,NAME,PHOTO FROM CAS.USERINFO",_variant((IDispath *)pConn,true),adOpenDynamic,adLockOptimistic,adCmdText);  pRes->AddNew();
  pRs->Fields->GetItem("ID")->value = nID;   //这里就抛出异常
 .....
 不知道为什么?

解决方案 »

  1.   

    pRs->Fields->GetItem("ID")->value = (long)nID;   //这里就抛出异常
      

  2.   

    整型要转换long来操作字段value
      

  3.   

    请使用 PutValue :
    pRs->Fields->GetItem("ID")->PutValue(_bstr_t(nID));
      

  4.   

    假如你的 clob 字段名为 clobcol, 则这样读:
    _variant_t varBLOB;
    CString str;
    long lDataSize = pRs->GetFields()->GetItem("clobcol")->ActualSize;
    varBLOB = pRs->GetFields()->GetItem("clobcol")->GetChunk(lDataSize);
    if(varBLOB.vt == VT_BSTR)
    str = varBLOB.bstrVal;
      

  5.   

    pRs->Open("SELECT ID,NAME,PHOTO FROM CAS.USERINFO",_variant((IDispath *)pConn,true),adOpenDynamic,adLockOptimistic,adCmdText);这句话也失败了,如果查询BLOB字段
      

  6.   

    CString strSQL = "SELECT ID,NAME,PHOTO FROM CAS.USERINFO";
    pRs.CreateInstance(__uuidof(Recordset));
    pRs->Open((_variant_t)strSQL,
    m_pConnection.GetInterfacePtr(), // m_pConnection 为 _ConnectionPtr 变量
    adOpenDynamic,
    adLockOptimistic,
    adCmdText);
      

  7.   

    to sgnaw大哥:
    如果没有查询中没有BLOB的话,是可是以前执行查询的