Visual c++ 在MFC中处理空BLOB-s

Visual c++ 在MFC中处理空BLOB-s,visual-c++,mfc,blob,Visual C++,Mfc,Blob,我有一个旧的MFC项目,我需要扩大。对于数据库操作,我使用从CRecordSet派生的类,并将Oracle BLOB绑定到CByteArray。当我检索一个带有空blob的行时,我得到一个大小为1字节、值为0xFF的数组。有没有办法检查数据库中的字段是否为空?或者这个0xFF数组实际上是一个表示空BLOB的值吗?好的,我找到了。函数为CRecordset::IsFieldNull,参数为绑定的CByteArray对象的地址,函数只能在Open()和Close()之间使用。大概是这样的: void

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

好的,我找到了。函数为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();
}