ADOConnection 偵測資料庫斷線 |
答題得分者是:salo0610
|
shinnlu
一般會員 發表:6 回覆:11 積分:3 註冊:2007-09-14 發送簡訊給我 |
大家好,
我目前的程式使用 ADOConnection 連接 mySQL,現在的需求是要改成斷線時,會藉由改變 connectionString 來連接 Access DB,我要如何偵測資料庫離線呢? 我剛剛試了一下,程式開啟時會跑以下事件 BeforeDisconnect WillDisconnect Login AfterDisconnect 而離開程式則是 BeforeDisconnect OnDisconnect AfterDisconnect 但如果程式連線中,將 mySQL server 關閉,卻不會觸發上述的這些事件,只會有一些錯誤訊息 [MySQL][ODBC 5.1 Driver[mysqld-4.1.16-nt]MySQL server has gone away TBMaster: Cannot perform this operation on a closed dataset 而且 ADOConnection->Connected 還是 true 請問有沒有辦法判斷ADOConnection 無法連線到資料庫呢? |
salo0610
高階會員 發表:42 回覆:120 積分:107 註冊:2003-02-18 發送簡訊給我 |
你好: 我的做法是在 DataSet(TADOQuery,TADOTable,TADODataSet.......) 在執行 sql 語法時, 用例外處理的方法取得 ADOConnection 與 資料庫連線斷線的訊息, 我不知這是不是唯一的方法!! 當然也在找尋更好的方法,如你所提到是否說可以在 ADOConnection 的 even 得到斷線的訊息!! ( 斷線時觸發了ADOConnection 某個even ) delphi如何取得異常代碼 http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=68376 |
shinnlu
一般會員 發表:6 回覆:11 積分:3 註冊:2007-09-14 發送簡訊給我 |
謝謝 salo 大的提示,剛剛發現幾乎大部份的操作都會觸發 ADOConn1WillExecute 這一個事件
而其他的事件,如新增或編輯後的 Post 可以在 ADOTable 的 RecordChangeComplete 處理 以下列出 WillchangeRecord 和 RecordChangeComplete 的執行順序和狀態 連線時的新增 WillchangeRecord, Reason=erAddNew, RCount=1, Event=esOK RecordChangeComplete,Reason=erAddNew, RCount=1, Event=esOK WillchangeRecord, Reason=erUpdate, RCount=1, Event=esOK RecordChangeComplete,Reason=erUpdate, RCount=1, Event=esOK 連線時的編輯 WillchangeRecord, Reason=erFirstChange, RCount=1, Event=esOK RecordChangeComplete,Reason=erFirstChange, RCount=1, Event=esOK WillchangeRecord, Reason=erUpdate, RCount=1, Event=esOK RecordChangeComplete,Reason=erUpdate, RCount=1, Event=esOK 斷線時的新增 WillchangeRecord, Reason=erAddNew, RCount=1, Event=esOK RecordChangeComplete,Reason=erAddNew, RCount=1, Event=esOK WillchangeRecord, Reason=erUpdate, RCount=1, Event=esOK RecordChangeComplete,Reason=erUpdate, RCount=1, Event=esErrorOccured WillchangeRecord, Reason=erUndoAddNew, RCount=1, Event=esOK RecordChangeComplete,Reason=erUndoAddNew, RCount=1, Event=esOK 斷線時的編輯 WillchangeRecord, Reason=erFirstChange, RCount=1, Event=esOK RecordChangeComplete,Reason=erFirstChange, RCount=1, Event=esOK WillchangeRecord, Reason=erUpdate, RCount=1, Event=esOK RecordChangeComplete,Reason=erUpdate, RCount=1, Event=esErrorOccured WillchangeRecord, Reason=erUndoUpdate, RCount=1, Event=esOK RecordChangeComplete,Reason=erUndoUpdate, RCount=1, Event=esO 補充一點,上述的動作都是按下 Post 才會觸發的事件 如果要在 Add or Edit 時馬上檢查,要對每一個 button 做額外的 query.
編輯記錄
shinnlu 重新編輯於 2008-08-15 18:08:18, 註解 無‧
|
shinnlu
一般會員 發表:6 回覆:11 積分:3 註冊:2007-09-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |