Empfangen von Benachrichtigungen
OLE DB bietet Schnittstellen zum Empfang von Benachrichtigungen, wenn Ereignisse auftreten.Eine Beschreibung finden Sie unter OLE DB-Objektbenachrichtigungen in der OLE-Programmierreferenz.Das Setup dieser Ereignisse verwendet den standardmäßigen COM-Verbindungspunktmechanismus.Ein ATL-Objekt, das Ereignisse über IRowsetNotify abrufen möchte, implementiert beispielsweise die IRowsetNotify-Schnittstelle, indem IRowsetNotify zu der aus Klassen abgeleiteten Liste hinzugefügt und mit einem COM_INTERFACE_ENTRY-Makro offen gelegt wird.
IRowsetNotify besitzt drei Methoden, die zu verschiedenen Zeiten aufgerufen werden können.Wenn Sie nur auf eine dieser Methoden reagieren möchten, können Sie die IRowsetNotifyImpl-Klasse verwenden, die E_NOTIMPL für die Methoden zurückgibt, an denen Sie nicht interessiert sind.
Wenn Sie das Rowset erstellen, müssen Sie dem Anbieter mitteilen, dass das zurückgegebene Rowset-Objekt IConnectionPointContainer unterstützen soll. Dies ist notwendig, um die Benachrichtigung einzurichten.
Im folgenden Code wird dargestellt, wie Sie ein Rowset über ein ATL-Objekt öffnen und anschließend die AtlAdvise-Funktion verwenden, um die Benachrichtigungssenke einzurichten.AtlAdvise gibt ein Cookie zurück, das beim Aufruf von AtlUnadvise verwendet wird.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);
product.Open(session, _T("Products"), &propset);
AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);