共用方式為


擷取 BLOB

您可以使用不同的方法來擷取二進位大型物件 (BLOB)。 此外,還可以使用 DBTYPE_BYTES 以一系列位元組方式擷取 BLOB,或使用類似 ISequentialStream 的介面。 如需詳細資訊,請參閱《OLE DB 程式設計人員參考》的 BLOBS 和 OLE 物件

下列程式碼顯示了使用 ISequentialStream 擷取 BLOB 的方法。 BLOB_ENTRY 巨集可以讓您指定介面和用於該介面的旗標。 程式碼會在開啟資料表之後,在 ISequentialStream 重複呼叫 Read,讀取 BLOB 位元組。 程式碼會在呼叫 MoveNext 取得下一筆資料錄之前,呼叫 Release 處置 (Dispose) 介面指標。

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 消費者樣板