Menerima Pemberitahuan
OLE DB menyediakan antarmuka untuk menerima pemberitahuan saat peristiwa terjadi. Ini dijelaskan dalam Pemberitahuan Objek OLE DB dalam Referensi Programmer OLE DB. Penyiapan peristiwa ini menggunakan mekanisme titik koneksi COM standar. Misalnya, objek ATL yang ingin mengambil peristiwa melalui IRowsetNotify
mengimplementasikan IRowsetNotify
antarmuka dengan menambahkan ke daftar turunan IRowsetNotify
kelas dan mengeksposnya melalui makro COM_INTERFACE_ENTRY.
IRowsetNotify
memiliki tiga metode, yang dapat dipanggil pada berbagai waktu. Jika Anda hanya ingin menanggapi salah satu metode ini, Anda dapat menggunakan kelas IRowsetNotifyImpl , yang mengembalikan E_NOTIMPL untuk metode yang tidak Anda minati.
Saat membuat set baris, Anda harus memberi tahu penyedia bahwa Anda ingin objek set baris yang dikembalikan didukung IConnectionPointContainer
, yang diperlukan untuk menyiapkan pemberitahuan.
Kode berikut menunjukkan cara membuka set baris dari objek ATL dan menggunakan AtlAdvise
fungsi untuk menyiapkan sink pemberitahuan. AtlAdvise
mengembalikan cookie yang digunakan saat Anda memanggil AtlUnadvise
.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);
Kemudian, digunakan oleh kode berikut:
product.Open(session, _T("Products"), &propset);
AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);