Как получить BLOB?

Вы можете получить большой двоичный объект (BLOB) в различными путями. DBTYPE_BYTES можно использовать для извлечения объекта BLOB как последовательность байтов, или вы можете использовать интерфейс как ISequentialStream. Для получения дополнительной информации, смотрите объекты BLOB и OLE объекты в OLE DB Справочник программиста.

В следующем коде показано извлечение BLOB с помощью интерфейса ISequentialStream. Макрос BLOB_ENTRY позволяет указать интерфейс и флаги, используемые для этого интерфейса. После открытия таблицы, код призывает чтения неоднократно ISequentialStream для чтения байтов из объекта BLOB. Код вызывает релиз распоряжаться указателя интерфейса до вызова MoveNext для получения на следующую запись.

класс CCategories
{
общественности:
   ISequentialStream * pPicture;

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

CTablelt;CAccessor <CCategories> > категории;
ULONG cb;
БАЙТ myBuffer [65536];

категории.Открытый (сессия, «Категории»);
во время (категории.MoveNext() == S_OK)
{
   ду
   {
      Categories.pPicture - > чтение (myBuffer, 65536 и cb);
      / / Сделать что-то с буфером
   } во время (cb > 0);
   Categories.pPicture - > Release();
}

Index