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 ISequentialStream
de . 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.
Utilisation des accesseurs
Macros et fonctions globales pour les modèles du consommateur OLE DB