Sie können ein binary large Object (BLOB) auf verschiedene Weise abrufen. Sie können DBTYPE_BYTES verwenden, um das BLOB als eine Folge von Bytes abrufen, oder Sie können eine Schnittstelle wie ISequentialStreamverwenden. Weitere Informationen finden Sie unter BLOBS und OLE-Objekte in der OLE DB Programmer's Reference.
Der folgende Code veranschaulicht, wie einen BLOB mithilfe von ISequentialStreamabrufen. Das Makro BLOB_ENTRY können Sie die Schnittstelle sowie die für die Schnittstelle verwendeten Flags festzulegen. Nach dem Öffnen der Tabelle ruft der Code Lesen wiederholt auf ISequentialStream damit Bytes aus dem BLOB gelesen. Der Code ruft Release auf den Schnittstellenzeiger zu verwerfen, bevor Aufrufen von MoveNext auf, um den nächsten Datensatz zu beziehen.
klasse CCategories
{
Öffentliche:
ISequentialStream * pPicture;
BEGIN_COLUMN_MAP(CCategories)
BLOB_ENTRY (4, IID_ISequentialStream, STGM_READ, pPicture)
END_COLUMN_MAP()
};
CTablelt;CAccessor <CCategories> > Kategorien;
ULONG Cb;
BYTE MyBuffer [65536];
Kategorien.Öffnen (Session, "Kategorien");
während (Kategorien.MoveNext() == S_OK)
{
tun
{
categories.pPicture - > Read (MyBuffer, 65536 & Cb);
/ / TU etwas mit den Puffer
} während (Cb > 0);
categories.pPicture - > Release();
}