Abrufen eines BLOBs
Sie können ein binäres großes Objekt (BLOB) auf verschiedene Arten abrufen. Sie können DBTYPE_BYTES
das BLOB als Bytesequenz abrufen oder eine Schnittstelle wie ISequentialStream
. Weitere Informationen finden Sie unter BLOBS und OLE-Objekte in der OLE DB-Programmierreferenz.
Der folgende Code zeigt, wie Sie ein BLOB mithilfe ISequentialStream
von . Mit dem Makro BLOB_ENTRY können Sie die Schnittstelle und die für die Schnittstelle verwendeten Flags angeben. Nach dem Öffnen der Tabelle ruft Read
der Code wiederholt an ISequentialStream
, um Bytes aus dem BLOB zu lesen. Der Code ruft Release
zum Löschen des Schnittstellenzeigers auf, bevor der aufruft MoveNext
, um den nächsten Datensatz abzurufen.
class CCategories
{
public:
ISequentialStream* pPicture;
BEGIN_COLUMN_MAP(CCategories)
BLOB_ENTRY(4, IID_ISequentialStream, STGM_READ, pPicture)
END_COLUMN_MAP()
};
Anschließend wird der folgende Code verwendet:
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();
}
Weitere Informationen zu Makros, die BLOB-Daten verarbeiten, finden Sie unter Spaltenzuordnungsmakros in Makros und globalen Funktionen für OLE DB Consumer Templates.
Siehe auch
Verwenden von Zugriffsmethoden
Makros und globale Funktionen für OLE-Consumervorlagen