Udostępnij za pośrednictwem


Pobieranie obiektu BLOB

Duży obiekt binarny (BLOB) można pobrać na różne sposoby. Możesz użyć DBTYPE_BYTES polecenia , aby pobrać obiekt BLOB jako sekwencję bajtów lub użyć interfejsu, takiego jak ISequentialStream. Aby uzyskać więcej informacji, zobacz Obiekty BLOBS i OLE w dokumentacji programisty OLE DB.

Poniższy kod pokazuje, jak pobrać obiekt BLOB przy użyciu polecenia ISequentialStream. Makro BLOB_ENTRY umożliwia określenie interfejsu i flag używanych dla interfejsu. Po otwarciu tabeli kod wielokrotnie ISequentialStream wywołuje Read kod w celu odczytywania bajtów z obiektu BLOB. Kod wywołuje Release metodę usuwania wskaźnika interfejsu przed wywołaniem MoveNext metody w celu uzyskania następnego rekordu.

class CCategories
{
public:
   ISequentialStream* pPicture;

BEGIN_COLUMN_MAP(CCategories)
   BLOB_ENTRY(4, IID_ISequentialStream, STGM_READ, pPicture)
END_COLUMN_MAP()
};

Następnie używany przez następujący kod:

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 obsługujących dane obiektów BLOB, zobacz Makra mapy kolumn w makrach i funkcjach globalnych dla szablonów konsumentów OLE DB.

Zobacz też

Korzystanie z metod dostępu
Makra i funkcje globalne dla szablonów konsumentów OLE DB