Puede recuperar un objeto binario grande (BLOB) de diversas maneras. Puede utilizar DBTYPE_BYTES para recuperar el BLOB como una secuencia de bytes, o puede utilizar una interfaz como ISequentialStream. Para obtener más información, consulte BLOBS y objetos OLE en la referencia del programador de OLE DB de.
El código siguiente muestra cómo recuperar un BLOB utilizando ISequentialStream. La macro BLOB_ENTRY le permite especificar la interfaz y los indicadores que se utilizan para la interfaz. Después de abrir la tabla, el código llama leer repetidamente en ISequentialStream para leer bytes desde el BLOB. El código llama Release para desechar el puntero de interfaz antes de llamar a MoveNext para obtener el siguiente registro.
clase CCategories
{
público:
ISequentialStream * pPicture;
BEGIN_COLUMN_MAP(CCategories)
BLOB_ENTRY (4, IID_ISequentialStream, STGM_READ, pPicture)
END_COLUMN_MAP()
};
CTablelt;CAccessor <CCategories> > categorías;
ULONG cb;
BYTE myBuffer [65536];
categorías.Abrir (sesión, "Categorías");
mientras (categorías.MoveNext() == S_OK)
{
hacer
{
Categories.pPicture - > Read (myBuffer, 65536 & cb);
/ / Hacer algo con el búfer
} mientras (cb > 0);
Categories.pPicture - > Release();
}