Como posso recuperar um BLOB?

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();
}

Index