Recuperando um BLOB
Você pode recuperar um objeto binário grande (BLOB) de várias maneiras. Você pode usar DBTYPE_BYTES para recuperar o BLOB com uma sequência de bytes ou para usar uma interface como ISequentialStream. Para obter mais informações, consulte Objetos de BLOBS e OLEna referência do programador de OLE DB.
O código a seguir mostra como recuperar um BLOB usando ISequentialStream. BLOB_ENTRY macro permite que você especifique a interface e os sinalizadores usados para a interface. Depois de abrir a tabela, o código a seguir chama Ler repetidamente em ISequentialStream para ler bytes de BLOB. O código a seguir chama Versão para descartar do ponteiro de interface antes de chamar MoveNext para obter o registro.
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();
}
Para obter mais informações sobre macros que manipulam dados BLOB, consulte “macros do mapa coluna” em Macros e funções globais para modelos do consumidor OLE DB.
Consulte também
Conceitos
Outros recursos
Macros e funções globais para modelos de consumidor de banco de dados OLE