建議使用 Visual Studio 2017

擷取 BLOB

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

您可以使用不同的方法來擷取二進位大型物件 (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 消費者樣板的巨集和全域函式

顯示: