Compartilhar via


Recuperar BLOB

Você pode recuperar um grande BLOB (objeto binário) de várias maneiras.Você pode usar DBTYPE_BYTES para recuperar BLOB sistema autônomo uma sequência de bytes ou usar uma interface sistema autônomo ISequentialStream. Para obter mais informações, consulte Objetos OLE e BLOBS in the Referência do programador do OLE DB.

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 descartar o ponteiro de interface antes de chamar MoveNext Para obter o próximo 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 as macros que manipulam dados BLOB, consulte "Macros de MAP de coluna" emFunções global para OLE DB consumidor modelos e macros.

Consulte também

Conceitos

Usar acessadores

Outros recursos

Macros e funções Global para modelos de consumidor de OOLE DB