Sdílet prostřednictvím


Načítání binárních rozsáhlých objektů (BLOB)

Binární rozsáhlý objek (BLOB) lze načíst různými způsoby. Můžete použít DBTYPE_BYTES k načtení binárního rozsáhlého objektu jako sekvenci bajtů nebo můžete použít rozhraní jako např. ISequentialStream. Další informace naleznete v tématu BLOBS and OLE Objects v OLE DB Programmer's Reference.

Následující kód ukazuje, jak načíst binární rozsáhlý objekt pomocí ISequentialStream. Makro BLOB_ENTRY vám umožní specifikovat rozhraní a příznaky použité pro rozhraní. Po otevření tabulky kód opakovaně volá Read na ISequentialStream, aby načetl bajty z binárního rozsáhlého objektu. Kód volá Release, aby odstranil ukazatel rozhraní před tím, než dojde k volání MoveNext pro získání dalšího záznamu.

class CCategories
{
public:
   ISequentialStream*   pPicture;

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

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 binárního rozsáhlého objektu, naleznete v tématu "Column Map Macros" v Macros and Global Functions for OLE DB Consumer Templates.

Viz také

Koncepty

Použití přístupových objektů

Další zdroje

Macros and Global Functions for OLE DB Consumer Templates