Обрабатывать NULL BLOB-ы в MFC - PullRequest
1 голос
/ 13 декабря 2010

У меня есть старый проект MFC, который мне нужно расширить.Для операций с базой данных я использую класс, производный от CRecordSet, и связываю Oracle BLOB с CByteArray.Когда я получаю строку с нулевым блобом, я получаю массив размером 1 байт со значением 0xFF.Есть ли способ проверить, является ли поле на самом деле NULL в базе данных?Или этот массив 0xFF на самом деле является значением, обозначающим нулевой BLOB?

1 Ответ

2 голосов
/ 13 декабря 2010

ОК, я нашел это.Функция 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...