1
我有一个需要扩展的旧MFC项目。对于数据库操作,我使用从CRecordSet派生的类,并将Oracle BLOB绑定到CByteArray。当我用null blob检索一行时,我得到一个大小为1字节,值为0xFF的数组。有没有办法来检查数据库中的字段是否实际为NULL?或者这个0xFF数组实际上是一个表示空BLOB的值?在MFC中处理NULL BLOB-s
我有一个需要扩展的旧MFC项目。对于数据库操作,我使用从CRecordSet派生的类,并将Oracle BLOB绑定到CByteArray。当我用null blob检索一行时,我得到一个大小为1字节,值为0xFF的数组。有没有办法来检查数据库中的字段是否实际为NULL?或者这个0xFF数组实际上是一个表示空BLOB的值?在MFC中处理NULL BLOB-s
好的,我找到了。该函数是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();
}