【问题标题】:Handle NULL BLOB-s in MFC在 MFC 中处理 NULL BLOB-s
【发布时间】:2010-12-14 00:06:34
【问题描述】:

我有一个需要扩展的旧 MFC 项目。对于数据库操作,我使用从 CRecordSet 派生的类,并将 Oracle BLOB 绑定到 CByteArray。当我检索带有空 blob 的行时,我得到一个大小为 1 字节且值为 0xFF 的数组。有没有办法检查数据库中的字段是否实际上为 NULL?还是这个 0xFF 数组实际上是一个表示空 BLOB 的值?

【问题讨论】:

    标签: visual-c++ mfc blob


    【解决方案1】:

    好的,我找到了。函数为CRecordset::IsFieldNull,参数为绑定的CByteArray对象的地址,该函数只能在Open()和Close()之间使用。像这样的:

    void CMySet::DoFieldExchange(CFieldExchange* pFX)
    {
      ...
      RFX_Binary(pFX, _T("[THE_BLOB]"), m_TheBlob, MAX_BLOB_SIZE);
    }
    
    void CMySet::ReadBlob(CByteArray& theBlob, BOOL& isNull)
    {
      m_strFilter = ...;
    
      Open();
    
      isNull = IsFieldNull(&m_TheBlob);
    
      if (!isNull)
        theBlob.Copy(m_TheBlob);
    
      Close();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2014-06-19
      • 2017-02-08
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多