ADO/WFC 中的 ADO 事件

ADO for Windows Foundation Classes (ADO/WFC) 建立在 ADO 事件模型之上,提供简化的应用程序接口。通常,ADO/WFC 截取 ADO 事件,将事件参数合并到单个事件类之中,然后调用事件处理程序。

使用 ADO/WFC 中的 ADO 事件

  1. 定义自己的事件处理程序方法以处理事件。例如,当您要处理 ConnectionEvent 类中的 ConnectComplete 事件时,可使用下列程序:
    public void onConnectComplete(Object sender,ConnectionEvent e)
    {
    System.out.println("onConnectComplete:" + e);
    }
    
  2. 定义对象处理程序以表示您的事件处理程序方法。对 ConnectionEvent 类型的事件,处理程序对象数据类型应该是 ConnectEventHandler,而对 RecordsetEvent 类型事件则应为 RecordsetEventHandler 数据类型。例如,请为 ConnectComplete 事件处理程序编写如下程序:
    ConnectionEventHandler handler = 
    new ConnectionEventHandler(this, "onConnectComplete");
    

    ConnectionEventHandler 构造函数的第一个参数是对某个类的引用,该类含有第二个参数命名的方法。

    Microsoft Visual J++ 编译器也支持相同的语法:

    ConnectionEventHandler handler = 
    new ConnectionEventHandler(this.onConnectComplete);

    单个参数是对所需类(即 this)及其方法的引用(即 onConnectComplete)。

  3. 在指定用来处理特殊类型事件的处理程序列表中添加事件处理程序。使用带有 addOnEventName(handler) 这类名称的方法。

  4. ADO/WFC 在内部执行所有的 ADO 事件处理程序。所以,Connection Recordset 操作引起的事件都由 ADO/WFC 事件处理程序截取。

    ADO/WFC 事件处理程序传送 ADO/WFC ConnectionEvent 类实例的 ADO ConnectionEvent 参数,或 ADO/WFC RecordsetEvent 类实例的 ADO RecordsetEvent 参数。这些 ADO/WFC 类将合并 ADO 事件参数;也就是说,对所有 ADO ConnectionEventRecordsetEvent 方法的每个特有的参数,每个 ADO/WFC 都含有一个相应的数据成员。

  5. 然后 ADO/WFC 通过 ADO/WFC 的事件对象调用事件处理程序。例如,onConnectComplete 事件处理程序有下列签名:
    public void onConnectComplete(Object sender,ConnectionEvent e)
    

    第一个参数是传送事件(ConnectionRecordset)的对象类型,而第二个参数则是 ADO/WFC 事件对象(ConnectionEventRecordsetEvent)。

    事件处理程序的签名比 ADO 事件简单。但是,您还必须要了解 ADO 事件模型才能知道适用于事件的参数以及响应的方法。

  6. 从事件处理程序返回到 ADO 事件的 ADO/WFC 处理程序。ADO/WFC 将复制相关的 ADO/WFC 事件数据成员到 ADO 事件参数,然后返回 ADO 事件处理程序。

  7. 结束处理的时候,从 ADO/WFC 事件处理程序列表上删除处理程序。使用带有 removeOnEventName(handler) 这类名称的方法。