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