2010-12-13 69 views
1

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

回答

2

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