Come posso recuperare un BLOB?

È possibile recuperare un oggetto binario di grandi dimensioni (BLOB) in vari modi. È possibile utilizzare DBTYPE_BYTES per recuperare il BLOB come una sequenza di byte, oppure è possibile utilizzare un'interfaccia come ISequentialStream. Per ulteriori informazioni, vedere BLOB e oggetti OLE in OLE DB Programmer di riferimento.

Il codice seguente viene illustrato come recuperare un BLOB utilizzando ISequentialStream. La macro BLOB_ENTRY consente di specificare l'interfaccia e i flag utilizzati per l'interfaccia. Dopo l'apertura della tabella, il codice chiama lettura ripetutamente su ISequentialStream per leggere byte da BLOB. Il codice chiama Release per smaltire il puntatore all'interfaccia prima di chiamare il metodo MoveNext per ottenere il record successivo.

classe CCategories
{
pubblica:
   ISequentialStream * pPicture;

BEGIN_COLUMN_MAP(CCategories)
   BLOB_ENTRY (4, IID_ISequentialStream, STGM_READ, pPicture)
END_COLUMN_MAP()
};

CTablelt;CAccessor <CCategories> > Categorie;
ULONG cb;
BYTE myBuffer [65536];

Categorie.Apri (sessione, "Categories");
mentre (categorie.MoveNext () = = S_OK)
{
   fare
   {
      Categories.pPicture - > Read (myBuffer, 65536 & cb);
      / / Fare qualcosa con il buffer
   } mentre (cb > 0);
   Categories.pPicture - > errato;
}

Index