レコードセット: 大量のデータの処理 (ODBC)
このトピックは、MFC ODBC クラスと MFC DAO クラスの両方に適用されます。
Note
MFC DAO クラスを使用している場合は、 CLongBinaryクラスではなくクラスCByteArrayを使用して、大きなデータ項目を管理します。 バルク行フェッチで MFC ODBC クラスを使用している場合は、 CLongBinary ではなくを使用 CByteArray します。 バルク行フェッチの詳細については、「レコード セット: バルクデータフェッチ (ODBC)」を参照してください。
たとえば、ビットマップ (従業員の写真、地図、製品の画像、OLE オブジェクトなど) などの大きなデータをデータベースで格納できるとします。 この種類のデータは、次の理由により、バイナリラージオブジェクト (または BLOB) と呼ばれることがよくあります。
各フィールドの値は大きいです。
数値およびその他の単純なデータ型とは異なり、予測可能なサイズはありません。
データは、プログラムの観点からは formless いません。
このトピックでは、このようなオブジェクトを操作するためにデータベースクラスで提供されるサポートについて説明します。
ラージオブジェクトの管理
レコードセットには、バイナリラージオブジェクトを管理するための特殊な難しさを解決する2つの方法があります。 クラス CByteArray を使用することも、 CLongBinaryクラスを使用することもできます。 一般に、 CByteArray は大規模なバイナリデータを管理するために推奨される方法です。
CByteArray ではより多くのオーバーヘッドが必要です CLongBinary が、 CByteArrayで説明されているように、より多くの機能を利用できます。 CLongBinary については CLongBinaryで簡単に説明します。
を使用して大きなデータ項目を操作する方法の詳細について CByteArray は、「 CByteArray」を参照してください。
CByteArray クラス
CByteArray は、MFC コレクションクラスの1つです。 オブジェクトは、 CByteArray 必要に応じて配列が拡張できるバイトの動的配列を格納し — ます。 クラスは、組み込みの C++ 配列と同様に、インデックスによる高速アクセスを提供します。 CByteArray オブジェクトをシリアル化し、診断のためにダンプできます。 クラスは、指定されたバイトの取得と設定、バイトの挿入と追加、および1バイトまたはすべてのバイトの削除を行うためのメンバー関数を提供します。 これらの機能により、バイナリデータの解析が容易になります。 たとえば、バイナリオブジェクトが OLE オブジェクトの場合は、実際のオブジェクトに移動するためにヘッダーバイトを処理することが必要になることがあります。
レコードセットでの CByteArray の使用
レコードセットのフィールドデータメンバーに型を指定することにより、 CByteArrayCByteArray がレコードセットとデータソースの間のオブジェクトの転送を管理し、オブジェクト内のデータを操作できるようにするための固定ベースを提供します。 RFX は、データを取得するために特定のサイトを必要とします。また、基になるデータにアクセスする方法が必要です。
を使用して大きなデータ項目を操作する方法の詳細について CByteArray は、「 CByteArray」を参照してください。
CLongBinary クラス
CLongBinaryオブジェクトは、 ヒープに割り当てられたストレージのブロックへのハンドルを囲む単純なシェルです。 バイナリラージオブジェクトを含むテーブル列をバインドする場合、RFX は HGLOBAL データをレコードセットに転送する必要があるときにハンドルを割り当て、レコードセットのフィールドにハンドルを格納し CLongBinary ます。
さらに、 HGLOBAL ハンドルを使用して m_hData データ自体を操作し、処理データの場合と同様に操作します。 ここで CByteArray が機能を追加します。
注意事項
CLongBinary オブジェクトは、関数呼び出しでパラメーターとして使用することはできません。 さらに、を呼び出す実装では、スクロール可能 ::SQLGetData なスナップショットのスクロールパフォーマンスが必ず低下します。 このことは、自分で呼び出しを使用して ::SQLGetData 動的なスキーマ列を取得する場合にも当てはまります。
こちらもご覧ください
レコードセット (ODBC)
レコードセット: 合計およびその他の集計結果の取得 (ODBC)
レコードフィールド Exchange (RFX)