Compartir a través de


Recuperar un objeto BLOB

Se puede recuperar un objeto binario grande (BLOB, Binary Large Object) de varias maneras.Puede usar DBTYPE_BYTES para recuperarlo como una secuencia de bytes o usar una interfaz como ISequentialStream.Para obtener más información, vea Objetos BLOB y OLE en la Referencia del programador de OLE DB.

En el código siguiente se muestra cómo recuperar un objeto BLOB a través de ISequentialStream.La macro BLOB_ENTRY permite especificar la interfaz y los marcadores usados para la interfaz.Después de abrir la tabla, el código llama repetidas veces a Read en ISequentialStream para leer bytes del objeto BLOB.El código llama a Release para deshacerse del puntero de interfaz antes de llamar a MoveNext para obtener el siguiente 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 obtener más información acerca de las macros que controlan datos BLOB, vea "Macros del mapa de columnas" en Macros y funciones globales para las plantillas de consumidor OLE DB.

Vea también

Conceptos

Utilizar descriptores de acceso

Otros recursos

Las macros y Global funciona para plantillas de consumidor OLE DB