Partager via


Récupération d'un BLOB

Mise à jour : novembre 2007

Vous pouvez récupérer un objet de type BLOB (Binary Large Object) de diverses manières. Vous pouvez utiliser DBTYPE_BYTES pour récupérer le BLOB en tant que séquence d'octets, ou recourir à une interface de type ISequentialStream. Pour plus d'informations, consultez BLOBS et objets OLE dans le Guide de référence du programmeur OLE DB.

Le code suivant montre comment récupérer un BLOB en utilisant ISequentialStream. La macro BLOB_ENTRY vous permet de spécifier l'interface et les indicateurs utilisés pour l'interface. Après avoir ouvert la table, le code appelle Read à maintes reprises sur ISequentialStream pour lire les octets à partir du BLOB. Le code appelle Release pour supprimer le pointeur de l'interface avant d'appeler MoveNext pour obtenir l'enregistrement suivant.

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

Pour plus d'informations sur les macros qui gèrent les données BLOB, consultez « Macros de table de colonnes » dans Macros et fonctions globales pour les modèles du consommateur OLE DB.

Voir aussi

Concepts

Utilisation des accesseurs

Autres ressources

Macros and Global Functions for OLE DB Consumer Templates