Udostępnij za pośrednictwem


Trwa 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 pobierania za pomocą obiektu BLOB ISequentialStream.Makro BLOB_ENTRY pozwala na określenie interfejs i flag, używany dla interfejsu.Po otwarciu tabeli, kod wywołuje odczytu wielokrotnie z ISequentialStream do odczytu bajtów z obiektu BLOB.Wywołania kodu wersji do dysponowania wskaźnika interfejsu przed wywoływaniem 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 obiektu BLOB, zobacz "Makra kolumn mapę" w makr i funkcje globalne OLE DB konsumenta szablonów.

Zobacz też

Koncepcje

Za pomocą akcesorów

Inne zasoby

Makra i funkcje globalne OLE DB konsumenta szablonów