次の方法で共有


BLOB の取得

バイナリ ラージ オブジェクト (BLOB: Binary Large Object) は、さまざまな方法で取得できます。DBTYPE_BYTES を使用して、BLOB をバイト シーケンスとして取得できます。または、ISequentialStream などのインターフェイスを使用できます。詳細については、『OLE Programmer's Reference』の「BLOBS and OLE Objects」を参照してください。

以下のコードでは、ISequentialStream を使用して BLOB を取得する方法を示しています。BLOB_ENTRY マクロでは、インターフェイスと、インターフェイスに使用するフラグを指定できます。テーブルを開いた後で、ISequentialStream に対して Read を繰り返し呼び出して、BLOB からバイトを読み込みます。MoveNext を呼び出して次のレコードを取得する前に、Release を呼び出してインターフェイス ポインターを破棄します。

class CCategories
{
public:
   ISequentialStream*   pPicture;

BEGIN_COLUMN_MAP(CCategories)
   BLOB_ENTRY(4, IID_ISequentialStream, STGM_READ, pPicture)
END_COLUMN_MAP()
};

CTable<CAccessor<CCategories> > categories;
ULONG          cb;
BYTE            myBuffer[65536];

categories.Open(session, "Categories");
while (categories.MoveNext() == S_OK)
{
   do
   {
      categories.pPicture->Read(myBuffer, 65536, &cb);
      // Do something with the buffer
   } while (cb > 0);
   categories.pPicture->Release();
}

BLOB データを処理するマクロの詳細については、「OLE DB コンシューマー テンプレート用マクロおよびグローバル関数」の「列マップ マクロ」を参照してください。

参照

概念

アクセサーの使用

その他の技術情報

OLE DB コンシューマー テンプレート用マクロおよびグローバル関数