Odbieranie powiadomień
Ole DB udostępnia interfejsy do odbierania powiadomień w przypadku wystąpienia zdarzeń. Są one opisane w powiadomieniach o obiektach OLE DB w dokumentacji programisty OLE DB. Konfiguracja tych zdarzeń używa standardowego mechanizmu punktu połączenia COM. Na przykład obiekt ATL, który chce pobierać zdarzenia za pośrednictwem IRowsetNotify
implementuje IRowsetNotify
interfejs, dodając IRowsetNotify
go do listy pochodnej klasy i uwidaczniając go za pośrednictwem makra COM_INTERFACE_ENTRY.
IRowsetNotify
ma trzy metody, które mogą być wywoływane w różnych momentach. Jeśli chcesz odpowiedzieć tylko na jedną z tych metod, możesz użyć klasy IRowsetNotifyImpl , która zwraca E_NOTIMPL dla metod, których nie interesujesz.
Podczas tworzenia zestawu wierszy należy poinformować dostawcę, że obiekt zwracanego zestawu wierszy ma obsługiwać IConnectionPointContainer
obiekt , który jest wymagany do skonfigurowania powiadomienia.
Poniższy kod pokazuje, jak otworzyć zestaw wierszy z obiektu ATL i użyć AtlAdvise
funkcji do skonfigurowania ujścia powiadomień. AtlAdvise
Zwraca plik cookie używany podczas wywoływania metody AtlUnadvise
.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);
Następnie używany przez następujący kod:
product.Open(session, _T("Products"), &propset);
AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);