共用方式為


擷取 BLOB

您可以透過各種方式擷取二進位大型物件 (BLOB)。 您可以使用 DBTYPE_BYTES 來擷取 BLOB 作為位元組序列,或使用類似的 ISequentialStream介面。 如需詳細資訊,請參閱 OLE DB 程式設計人員參考中的 BLOBS 和 OLE 物件

下列程式代碼示範如何使用 擷取 BLOB ISequentialStream巨集BLOB_ENTRY可讓您指定介面和介面所使用的旗標。 開啟數據表之後,程式代碼會重複呼叫 Read ISequentialStream ,以從 BLOB 讀取位元組。 程序代碼會先呼叫 Release 以處置介面指標,再呼叫 MoveNext 以取得下一筆記錄。

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 消費者範本的巨集和全域函式