Você pode recuperar um objeto binário grande (BLOB) de várias maneiras. Você pode usar DBTYPE_BYTES para recuperar o BLOB como uma seqüência de bytes, ou você pode usar uma interface como ISequentialStream. Para obter mais informações, consulte BLOBS e objetos OLE no referência OLE DB Programmer.
O código a seguir mostra como recuperar um BLOB usando ISequentialStream. A macro BLOB_ENTRY permite que você especifique a interface e os sinalizadores usados para a interface. Depois de abrir a tabela, o código chama leitura repetidamente no ISequentialStream para ler os bytes de BLOB. O código chama versão de ceder o ponteiro de interface antes de chamar MoveNext para obter o próximo registro.
classe CCategories
{
público:
ISequentialStream * pPicture;
BEGIN_COLUMN_MAP(CCategories)
BLOB_ENTRY (4, como IID_ISequentialStream, STGM_READ, pPicture)
END_COLUMN_MAP()
};
CTablelt;CAccessor <CCategories> > Categorias;
ULONG cb;
BYTE myBuffer [65536];
Categorias.Open (session, "Categorias");
ao mesmo tempo (categorias.MoveNext() = = S_OK)
{
fazer
{
Categories.pPicture - > Read (myBuffer, 65536 & cb);
/ / Fazer algo com a reserva
} while (cb > 0);
Categories.pPicture - > Release();
}