Vous pouvez extraire un objet binaire volumineux (BLOB) de diverses façons. Vous pouvez utiliser DBTYPE_BYTES pour récupérer l'objet BLOB comme une séquence d'octets, ou vous pouvez utiliser une interface ISequentialStream. Pour plus d'informations, voir BLOBS et les objets OLE dans la référence du programmeur OLE DB de.
Le code suivant montre comment récupérer un objet BLOB à l'aide d'ISequentialStream. La macro BLOB_ENTRY permet de spécifier l'interface et les indicateurs utilisés pour l'interface. Après l'ouverture de la table, le code appelle lire à plusieurs reprises sur ISequentialStream pour lire les octets de l'objet BLOB. Le code appelle la libération pour statuer sur le pointeur d'interface avant d'appeler MoveNext pour obtenir l'enregistrement suivant.
catégories de la classe
{
public :
ISequentialStream * pPicture ;
BEGIN_COLUMN_MAP(CCategories)
BLOB_ENTRY (4, IID_ISequentialStream, STGM_READ, pPicture)
END_COLUMN_MAP()
};
CTablelt ;CAccessor <CCategories> > Catégories ;
ULONG cb ;
BYTE myBuffer [65536] ;
catégories.Ouvert (session, « Categories ») ;
alors que (catégories.MoveNext() == S_OK)
{
do
{
categories.pPicture - > Read (myBuffer, 65536, & cb) ;
/ / Faire quelque chose avec le tampon
} tout (cb > 0) ;
categories.pPicture - > Release() ;
}