淺析ADO事件模型

字號:

“ADO 事件模型”支持某些同步或異步的 ADO 操作,這些操作在其開始之前或完成之后能夠引發(fā)事件?!笆录睂嶋H上是對事件處理程序例程的調(diào)用。
    操作開始前調(diào)用的事件處理程序用于檢查或修改操作參數(shù),此后可刪除操作或使其完成。由于 ADO 2.0 支持異步操作,所以操作完成后調(diào)用的事件處理程序特別重要。例如,啟動異步Recordset.Open 操作的應(yīng)用程序在操作完成時,通過執(zhí)行完畢事件來獲得通知。
    有兩類事件:
    ConnectionEvents — 當連接的事務(wù)開始、提交或回卷時,當 Command 執(zhí)行時,以及 Connection
    開始或結(jié)束時所引發(fā)的事件。
    RecordsetEvents — 當定位 Recordset 對象行,更改 Recordset 行中的字段,更改 Recordset 中的行,或在記錄集進行任何更改時所引發(fā)的事件。
    ADO 事件總結(jié)
    ADO 2.0 支持事件,事件是對某些操作將要或已經(jīng)發(fā)生的通知。
    有兩類事件:ConnectionEvent 和 RecordsetEvent。Connection 對象產(chǎn)生ConnectionEvent 事件,而 Recordset 對象則產(chǎn)生 RecordsetEvent 事件。
    事件由事件處理程序例程處理,該例程在某個操作開始之前或結(jié)束之后被調(diào)用。
    某些事件是成對出現(xiàn)的。開始操作前調(diào)用的事件名格式為 WillEvent(Will 事件),而操作結(jié)束后調(diào)用的事件名格式為 EventComplete(Complete 事件)。
    其余的不成對事件只在操作結(jié)束后發(fā)生。(其名稱沒有任何固定模式。)事件處理程序由狀態(tài)參數(shù)控制。附加信息由錯誤和對象參數(shù)提供。
    可以請求事件處理程序不接受第一次通知以后的任何通知。例如,可以選擇只接收Will 事件或 Complete 事件。
    在某種編程語言中,來自多個 ADO 對象的事件可以由一個事件處理程序處理。一個事件也可以用多個事件處理程序處理,但不太常見。
    ADO 事件
    ADO 2.0 支持事件。事件是由某些操作在開始之前或結(jié)束之后發(fā)出的通知。事件實際上是對應(yīng)用程序中定義的事件處理程序例程的調(diào)用。請參閱 不同語言的 ADO 事件實例。
    事件分成兩類。ConnectionEvent 類從屬于 Connection 對象的操作,而 RecordsetEvent類則從屬于 Recordset 對象的操作。 ConnectionEvents — 在連接的事務(wù)開始、提交或回卷時,或在 Command 被執(zhí)行、連接開始或結(jié)束時,事件即被引發(fā)。
    RecordsetEvents — 在 Recordset 對象行中定位、更改 Recordset 行中的字段、更改Recordset 的行、或是在 Recordset 作任何修改時,事件即被引發(fā)。
    ADO 事件處理程序概述
    ConnectionEvent 說明
    BeginTransComplete、CommitTransComplete、RollbackTransComplete 事務(wù)管理 — 關(guān)于連接上的當前事務(wù)已經(jīng)開始、已經(jīng)提交、或者已經(jīng)回卷的通知。
    WillConnect、ConnectComplete、Disconnect 連接管理 — 關(guān)于當前連接即將開始、已經(jīng)開始、或者已經(jīng)結(jié)束的通知。
    WillExecute、ExecuteComplete 命令執(zhí)行管理 — 關(guān)于連接的當前命令的執(zhí)行即將開始、或者已經(jīng)結(jié)束的通知。
    InfoMessage Informational — 關(guān)于當前操作有附加信息的通知。
    RecordsetEvent 說明
    FetchProgress、FetchComplete 檢索狀態(tài) — 關(guān)于數(shù)據(jù)檢索操作進度、或者檢索操作已經(jīng)結(jié)束的通知。
    WillChangeField、FieldChangeComplete 字段更改管理 — 關(guān)于當前字段值即將更改、或者已經(jīng)更改的通知。
    WillMove、MoveComplete、EndOfRecordset 定位管理 — 關(guān)于當前行在 Recordset 中的位置即將更改、已經(jīng)更改、或者已經(jīng)到達 Recordset 結(jié)尾的通知。
    WillChangeRecord、RecordChangeComplete 行更改管理 — 關(guān)于 Recordset 當前行的某些地方即將更改、或者已經(jīng)更改的通知。
    WillChangeRecordset、RecordsetChangeComplete Recordset 更改管理 — 關(guān)于當前 Recordset的某些地方即將更改、或者已經(jīng)更改的通知。
    事件類型
    Will 事件
    操作開始之前調(diào)用的事件處理程序使您有機會檢查或修改操作參數(shù),然后取消操作或允許完成該操作。這些事件處理程序例程通常具有形如 WillEvent(Will 事件)的名稱。
    Complete 事件
    操作完成之后調(diào)用的事件處理程序?qū)⑾驊?yīng)用程序發(fā)出操作已經(jīng)結(jié)束的通知。當掛起的操作被 Will事件處理程序取消時,該事件處理程序也會收到通知。這些事件處理程序例程通常具有如象EventComplete(Complete 事件)的名稱。
    Will 和 Complete 事件一般成對使用。
    其他事件
    其他事件處理程序(事件名不使用 WillEvent 或 EventComplete 格式)僅在操作完成后被調(diào)用。
    事件參數(shù)
    每個事件處理程序都有一個控制它的狀態(tài)參數(shù)。大部分 Complete 事件都有錯誤參數(shù),用于報告引起事件發(fā)生的操作是否成功。另外還有一個對象參數(shù),用于標識操作所執(zhí)行的 ADO 對象。
    Will 事件也傳遞用于掛起操作的參數(shù)。這樣您就有機會檢查參數(shù)并確定操作是否應(yīng)該完成。
    狀態(tài)參數(shù)
    當事件處理程序例程被調(diào)用時,狀態(tài)參數(shù)將被設(shè)置為下列信息值之一。