ADO for Windows Foundation Classes (ADO/WFC) 建立在 ADO 事件模型之上,提供簡化的應(yīng)用程序接口。通常,ADO/WFC 截取 ADO 事件,將事件參數(shù)合并到單個(gè)事件類之中,然后調(diào)用事件處理程序。
使用 ADO/WFC 中的 ADO 事件
1. | 定義自己的事件處理程序方法以處理事件。例如,當(dāng)您要處理 ConnectionEvent 類中的 ConnectComplete 事件時(shí),可使用下列程序: |
public void onConnectComplete(Object sender,ConnectionEvent e)
{
System.out.println("onConnectComplete:" + e);
}
2. | 定義對(duì)象處理程序以表示您的事件處理程序方法。對(duì) ConnectionEvent 類型的事件,處理程序?qū)ο髷?shù)據(jù)類型應(yīng)該是 ConnectEventHandler,而對(duì) RecordsetEvent 類型事件則應(yīng)為 RecordsetEventHandler 數(shù)據(jù)類型。例如,請(qǐng)為 ConnectComplete 事件處理程序編寫如下程序: |
ConnectionEventHandler handler =
new ConnectionEventHandler(this, "onConnectComplete");
ConnectionEventHandler 構(gòu)造函數(shù)的第一個(gè)參數(shù)是對(duì)某個(gè)類的引用,該類含有第二個(gè)參數(shù)命名的方法。
Microsoft Visual J++ 編譯器也支持相同的語法:
ConnectionEventHandler handler =
new ConnectionEventHandler(this.onConnectComplete);
單個(gè)參數(shù)是對(duì)所需類(即 this)及其方法的引用(即 onConnectComplete)。
3. | 在指定用來處理特殊類型事件的處理程序列表中添加事件處理程序。使用帶有 addOnEventName(handler) 這類名稱的方法。 |
4. | ADO/WFC 在內(nèi)部執(zhí)行所有的 ADO 事件處理程序。所以,Connection 或 Recordset 操作引起的事件都由 ADO/WFC 事件處理程序截取。 |
ADO/WFC 事件處理程序傳送 ADO/WFC ConnectionEvent 類實(shí)例的 ADO ConnectionEvent 參數(shù),或 ADO/WFC RecordsetEvent 類實(shí)例的 ADO RecordsetEvent 參數(shù)。這些 ADO/WFC 類將合并 ADO 事件參數(shù);也就是說,對(duì)所有 ADO ConnectionEvent 或 RecordsetEvent 方法的每個(gè)特有的參數(shù),每個(gè) ADO/WFC 都含有一個(gè)相應(yīng)的數(shù)據(jù)成員。
5. | 然后 ADO/WFC 通過 ADO/WFC 的事件對(duì)象調(diào)用事件處理程序。例如,onConnectComplete 事件處理程序有下列簽名: |
public void onConnectComplete(Object sender,ConnectionEvent e)
第一個(gè)參數(shù)是傳送事件(Connection 或 Recordset)的對(duì)象類型,而第二個(gè)參數(shù)則是 ADO/WFC 事件對(duì)象(ConnectionEvent 或 RecordsetEvent)。
事件處理程序的簽名比 ADO 事件簡單。但是,您還必須要了解 ADO 事件模型才能知道適用于事件的參數(shù)以及響應(yīng)的方法。
6. | 從事件處理程序返回到 ADO 事件的 ADO/WFC 處理程序。ADO/WFC 將復(fù)制相關(guān)的 ADO/WFC 事件數(shù)據(jù)成員到 ADO 事件參數(shù),然后返回 ADO 事件處理程序。 |
7. | 結(jié)束處理的時(shí)候,從 ADO/WFC 事件處理程序列表上刪除處理程序。使用帶有 removeOnEventName(handler) 這類名稱的方法。 |