也可以采用循环轮询以外的方式测试异步操作是否完成,即编写自己的事件处理程序,在查询、连接或其它异步操作的事件发生时将其捕获。
下表对每一种 RDO 异步查询事件进行了简单的描述。
rdoEngine 对象的异步事件
| 事件 | 触发于... |
| InfoMessage | ODBC API 函数返回 SQL_SUCCESS_WITH_INFO 时。 |
rdoEnvironment 对象的异步事件
| 事件 | 触发于... |
| BeginTrans | BeginTrans 方法完成之后。 |
| CommitTrans | CommitTrans 方法完成之后。 |
| RollbackTrans | RollbackTrans 方法完成之后。 |
rdoConnection 对象的异步事件
| 事件 | 触发于... |
| BeforeConnect | 在调用 SQLDriverConnect 之前,从而允许开发人员进行提示。 |
| Connect | 连接操作完成之后,无论是否成功。 |
| Disconnect | 连接关闭之后。 |
| QueryComplete | 查询完成之后,无论是否成功。 |
| QueryTimeout | QueryTimeout 所设置的时间已用完,而查询仍未完成。 |
| WillExecute | 在查询执行之前,从而允许开发人员阻止查询的执行,或在最后时刻对 SQL 作些调整。 |
rdoResultset 对象的异步事件
| 事件 | 触发于... |
| Associate | 在一个新的连接被关联到该对象之后。 |
| Dissociate | 与连接分离之后。 |
| ResultsChange | 当前的行集合被修改之后(多结果集)。 |
| RowCurrencyChange | 当前行的状态改变(由于编辑、删除或插入等操作)之后,或当前行指针改变时。 |
| RowStatusChange | 当前行的状态改变(由于编辑、删除或插入等操作)之后。 |
| WillAssociate | 一个新的连接被关联到一个对象之前,开发人员可以影响或取消该操作。 |
| WillDissociate | 在与连接分离之前,开发人员可以影响或取消该操作。 |
| WillUpdateRows | 在对服务器的更新发生之前,开发人员可以影响或取消该操作。 |
rdoColumn 对象的异步事件
| 事件 | 触发于... |
| DataChange | 当数据行的值发生改变时。 |
| WillChangeData | 在数据行的值改变之前,允许开发人员取消它。 |