接收通知

OLE DB 提供用于在事件发生时接收通知的接口。 这些内容在“OLE DB 程序员参考”中的 OLE DB 对象通知中介绍。 这些事件的设置使用标准的 COM 连接点机制。 例如,想要通过 IRowsetNotify 检索事件的 ATL 对象通过将 IRowsetNotify 添加到类派生列表并通过 COM_INTERFACE_ENTRY 宏公开它来实现 IRowsetNotify 接口。

IRowsetNotify 有三种方法,可以在不同时间调用。 如果只想响应其中一种方法,则可以使用 IRowsetNotifyImpl 类,对于你不感兴趣的方法,该类会返回 E_NOTIMPL。

创建行集时,必须告知提供程序希望返回的行集对象支持 IConnectionPointContainer,这是设置通知所必需的。

以下代码演示如何从 ATL 对象打开行集,并使用 AtlAdvise 函数设置通知接收器。 AtlAdvise 返回调用 AtlUnadvise 时使用的 Cookie。

CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IConnectionPointContainer, true);

然后,由以下代码使用:

product.Open(session, _T("Products"), &propset);

AtlAdvise(product.m_spRowset, GetUnknown(), IID_IRowsetNotify, &m_dwCookie);

另请参阅

使用访问器