ADO 事件实例化:ADO 和 WFC
ADO for Windows Foundation Classes (ADO/WFC) 建立在 ADO 事件模型之上,并提供了一个简化的应用程序编程接口。 通常,ADO/WFC 拦截 ADO 事件,将事件参数合并到单个事件类中,然后调用你的事件处理程序。
在 ADO/WFC 中使用 ADO 事件
定义你自己的事件处理程序来处理事件。 例如,如果你想处理 ConnectionEvent 系列中的 ConnectComplete 事件,你可以使用以下代码:
public void onConnectComplete(Object sender,ConnectionEvent e) { System.out.println("onConnectComplete:" + e); }
定义一个处理程序对象来表示你的事件处理程序。 对于 ConnectionEvent 类型的事件,处理程序对象的数据类型应该是 ConnectEventHandler,对于 RecordsetEvent 类型的事件,应该是数据类型 RecordsetEventHandler。 例如,为你的 ConnectComplete 事件处理程序编写以下代码:
ConnectionEventHandler handler = new ConnectionEventHandler(this, "onConnectComplete");
ConnectionEventHandler 构造函数的第一个参数是对包含在第二个参数中命名的事件处理程序的类的引用。
将你的事件处理程序添加到指定用于处理特定类型事件的处理程序列表中。 使用名称为 addOnEventName(handler) 的方法。
ADO/WFC 在内部实现所有 ADO 事件处理程序。 因此,由 Connection 或 Recordset 操作引起的事件会被 ADO/WFC 事件处理程序拦截。
ADO/WFC 事件处理程序在 ADO/WFC ConnectionEvent 类的实例中传递 ADO ConnectionEvent 参数,或在 ADO/WFC RecordsetEvent 类的实例中传递 ADO RecordsetEvent 参数。 这些 ADO/WFC 类合并了 ADO 事件参数;也就是说,对于所有 ADO ConnectionEvent 或 RecordsetEvent 方法中的每个唯一参数,每个 ADO/WFC 类都包含一个数据成员。
ADO/WFC 然后使用 ADO/WFC 事件对象调用你的事件处理程序。 例如,onConnectComplete 处理程序具有如下签名:
public void onConnectComplete(Object sender,ConnectionEvent e)
第一个参数是发送事件的对象类型(Connection 或 Recordset),第二个参数是 ADO/WFC 事件对象(ConnectionEvent 或 RecordsetEvent)。
事件处理程序的签名比 ADO 事件更简单。 但是,你仍然必须了解 ADO 事件模型才能知道哪些参数适用于事件以及如何响应。
从你的事件处理程序返回到 ADO 事件的 ADO/WFC 处理程序。 ADO/WFC 将相关的 ADO/WFC 事件数据成员复制回 ADO 事件参数,然后 ADO 事件处理程序返回。
完成处理后,从 ADO/WFC 事件处理程序列表中移除你的处理程序。 使用名称为 removeOn EventName (handler ) 的方法。