Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 ISequentialStreamvon . 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