Bagikan melalui


Mengambil BLOB

Anda dapat mengambil objek besar biner (BLOB) dengan berbagai cara. Anda dapat menggunakan DBTYPE_BYTES untuk mengambil BLOB sebagai urutan byte atau menggunakan antarmuka seperti ISequentialStream. Untuk informasi selengkapnya, lihat Objek BLOBS dan OLE di Referensi Programmer OLE DB.

Kode berikut menunjukkan cara mengambil BLOB menggunakan ISequentialStream. Makro BLOB_ENTRY memungkinkan Anda menentukan antarmuka dan bendera yang digunakan untuk antarmuka. Setelah membuka tabel, kode memanggil Read berulang ISequentialStream kali untuk membaca byte dari BLOB. Kode memanggil Release untuk membuang pointer antarmuka sebelum memanggil MoveNext untuk mendapatkan rekaman berikutnya.

class CCategories
{
public:
   ISequentialStream* pPicture;

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

Kemudian, digunakan oleh kode berikut:

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

Untuk informasi selengkapnya tentang makro yang menangani data BLOB, lihat Makro Peta Kolom di Makro dan Fungsi Global untuk Templat Konsumen OLE DB.

Lihat juga

Menggunakan Accessors
Makro dan Fungsi Global untuk Templat Konsumen OLE DB