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