我用在做Oracle数据库程序时出现错误, 具体如下:
某表中有blob数据, 根据该表结构从CRecordset类中继承一个新的类CMyRecordset后, 用Open函数打开记录集抛出异常, 但异常中错误字符串为空。
跟踪断点后发现错误出在DoDataExchange虚函数中的RFX_LongBinary上, 在读取数据库中一个blob字段时抛出的异常, 此时数据库中该字段为NULL,如果不读取该字段则没有问题, 不解中ing....

解决方案 »

  1.   

    在读取数据库中一个blob字段时抛出的异常, 此时数据库中该字段为NULL,如果不读取该字段则没有问题
    ==看一下你这段代码怎么写的
      

  2.   

    在读取数据库中一个blob字段时抛出的异常, 此时数据库中该字段为NULL,如果不读取该字段则没有问题
    ==看一下你这段代码怎么写的
      

  3.   

    用什么方式读取的?
    参考:
    读取数据   
        
      //   读取数据   
      vValue   =   m_pRecordset->Fields->GetItem(bstrSegName)->Value;   
      //   读取数据大小   
      nDataSize   =   m_pRecordset->GetFields()->GetItem(bstrSegName)->ActualSize;   
      nDataType   =   vValue.vt;   
        
      if   (nDataType   ==   (VT_ARRAY   |   VT_UI1))   
      {   
      m_lpData   =   new   char[nDataSize];   
      memset(m_lpData,   0,   nDataSize);   
      char*   pBufTemp   =   NULL;   
      SafeArrayAccessData(vValue.parray,   (void   **)&pBufTemp);   
      for   (int   i   =   0;   i   <   nDataSize;   i++)   
      *(((char*)m_lpData)+i)   =   *(pBufTemp+i);   
      SafeArrayUnaccessData   (vValue.parray);   
                          }   
      存入数据   
      BOOL   SaveBLOB(CString   strSegName,   UINT&   nDataSize,   char*   pBuf)   
      {   
      _bstr_tbstrSegName   =   strSegName;   
      VARIANTvarBLOB;   
      SAFEARRAY*psa;   
      SAFEARRAYBOUNDrgsabound[1];   
        
        
      //   保存BLOB数据   
      if(nDataSize   >   0)   
      {   
      rgsabound[0].lLbound   =   0;   
      rgsabound[0].cElements   =   nDataSize;   
      psa   =   SafeArrayCreate(VT_UI1,   1,   rgsabound);   
      for   (long   i   =   0;   i   <   (long)nDataSize;   i++)   
          SafeArrayPutElement   (psa,   &i,   pBuf+i);   
      varBLOB.vt   =   VT_ARRAY   |   VT_UI1;   
      varBLOB.parray   =   psa;   
      m_pRecordset->GetFields()->GetItem(bstrSegName)->AppendChunk(varBLOB);   
      }     
      m_pRecordset->Update();   
      return   TRUE;   
      }   
      

  4.   

    我是用向导重载MFC的CRecordset类来读取的数据