Aracılığıyla paylaş


BLOB Alma

İkili büyük nesneyi (BLOB) çeşitli şekillerde alabilirsiniz. ISequentialStream gibi bir arabirim kullanmak ya da BLOB'u bayt dizisi olarak almak için DBTYPE_BYTES kullanabilirsiniz. Daha fazla bilgi için, OLE DB Programcı Referansı'nda BLOBS ve OLE Nesneleri'ne bakın.

Aşağıdaki kod ISequentialStream kullanılarak nasıl bir BLOB alınacağını gösterir. Makro blob_entry, arabirimi ve arabirim için kullanılan bayrakları belirtmenize olanak sağlar. Tablo açıldıktan sonra kod, BLOB'dan baytları okumak için ISequentialStream üzerinde sürekli Oku öğesini çağırır. Kod, Release çağırıp bir sonraki kayda ulaşmak için MoveNext çağırmadan önce arayüz işaretçisini gösterir.

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();
}

BLOB verilerini işleyen makrolar hakkında daha fazla bilgi için, OLE DB Tüketici Şablonları için Makrolar ve Küresel İşlevler sayfasında "Sütun Eşleşme Makroları" konusuna bakın.

Ayrıca bkz.

Kavramlar

Erişimcileri Kullanma

Diğer Kaynaklar

Macros and Global Functions for OLE DB Consumer Templates