Pobieranie obiektu BLOB
Można pobrać dużego obiektu binarnego (BLOB) na różne sposoby.Można użyć DBTYPE_BYTES do pobierania obiektu BLOB jako sekwencja bajtów lub korzystają z interfejsu, takich jak ISequentialStream.Aby uzyskać więcej informacji, zobacz bloków BLOB i obiekty OLE w OLE DB Programmer's Reference.
Poniższy kod ilustruje sposób pobrać obiektu BLOB przy użyciu ISequentialStream.Makro BLOB_ENTRY umożliwia określenie interfejs i flagi używane dla interfejsu.Po otwarciu tabeli, kod wywołuje odczytu na ISequentialStream do odczytu bajtów z obiektu BLOB.Wywołania kodu wersji do dysponowania wskaźnika interfejsu przed wywołaniem funkcji MoveNext uzyskać następnego rekordu.
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();
}
Aby uzyskać więcej informacji na temat makr, które obsługują dane BLOB, zobacz "Kolumna mapę makra" w makra i funkcje globalne dla OLE DB konsumenta szablonów.