Sdílet prostřednictvím


Načtení objektu BLOB

Binární velký objekt (BLOB) můžete načíst různými způsoby. Objekt BLOB můžete načíst DBTYPE_BYTES jako posloupnost bajtů nebo použít rozhraní, jako je ISequentialStream. Další informace naleznete v tématu Objekty BLOBS a OLE v odkazech programátora OLE DB.

Následující kód ukazuje, jak načíst objekt BLOB pomocí ISequentialStream. Makro BLOB_ENTRY umožňuje zadat rozhraní a příznaky použité pro rozhraní. Po otevření tabulky kód opakovaně ISequentialStream volá Read čtení bajtů z objektu BLOB. Volání kódu Release pro odstranění ukazatele rozhraní před voláním MoveNext získat další záznam.

class CCategories
{
public:
   ISequentialStream* pPicture;

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

Potom ho použije následující kód:

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

Další informace o makrech, která zpracovávají data objektů blob, naleznete v tématu Makra mapování sloupců v makrech a globálních funkcích pro šablony příjemců OLE DB.

Viz také

Použití přístupových objektů
Makra a globální funkce pro šablony příjemců OLE DB