Partager via


Récupération d'un BLOB

Vous pouvez récupérer un objet blob (Binary Large Object) de différentes manières. Vous pouvez utiliser DBTYPE_BYTES pour récupérer l’objet BLOB en tant que séquence d’octets ou utiliser une interface comme ISequentialStream. Pour plus d’informations, consultez BLOBS et objets OLE dans la référence du programmeur OLE DB.

Le code suivant montre comment récupérer un objet BLOB à l’aide ISequentialStreamde . 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 à plusieurs reprises pour ISequentialStream lire des octets à partir de l’objet BLOB. Le code appelle Release pour supprimer le pointeur d’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()
};

Ensuite, utilisé par le code suivant :

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 carte de colonnes dans macros et fonctions globales pour les modèles de consommateur OLE DB.

Voir aussi

Utilisation des accesseurs
Macros et fonctions globales pour les modèles du consommateur OLE DB