2010-12-13 20 views
1

私は拡張が必要な​​古いMFCプロジェクトを持っています。データベース操作では、CRecordSetから派生したクラスを使用し、Oracle BLOBをCByteArrayにバインドします。空のBLOBを持つ行を取得すると、サイズが1バイトで値が0xFFの配列が得られます。フィールドが実際にデータベースでNULLかどうかを確認する方法はありますか?または、この0xFF配列は実際にはnull BLOBを示す値ですか?MFCでNULL BLOB-sを処理する

答えて

2

OK、見つかりました。関数は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(); 
} 
関連する問題