Recupero di un BLOB

È possibile recuperare un oggetto binario di grandi dimensioni (BLOB) in vari modi. È possibile usare DBTYPE_BYTES per recuperare il BLOB come sequenza di byte o usare un'interfaccia come ISequentialStream. Per altre informazioni, vedere BLOB e oggetti OLE nella guida di riferimento per programmatori OLE DB.

Il codice seguente illustra come recuperare un BLOB usando ISequentialStream. La macro BLOB_ENTRY consente di specificare l'interfaccia e i flag utilizzati per l'interfaccia. Dopo aver aperto la tabella, il codice chiama Read ripetutamente su ISequentialStream per leggere i byte dal BLOB. Il codice chiama Release per eliminare il puntatore dell'interfaccia prima di chiamare MoveNext per ottenere il record successivo.

class CCategories
{
public:
   ISequentialStream* pPicture;

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

Quindi, usato dal codice seguente:

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

Per altre informazioni sulle macro che gestiscono i dati BLOB, vedere Macro mappa colonne in Macro e Funzioni globali per i modelli di consumer OLE DB.

Vedi anche

Uso delle funzioni di accesso
Macro e funzioni globali per modelli consumer OLE DB