ADO 與 SQL 連線失敗 |
答題得分者是:aftcast
|
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
各位大大好:
我用 ADO 連 MS-SQL(本機、SQL 2000),( SQL<----TADOConnection<----TADOQuery ) 我在 ADOQuery 跟 SQL Server ,INSERT, DELETE, UPDATE, ALTER TABLE, and CREATE TABLE. Execute 之類的動作, 用了 try catch 來處理例外, try { . . . } catch(Exception &exception) { if( adQry->Connection->Errors->Count>0 ) { for(int i=0 ; i<=adQry->Connection->Errors->Count-1; i ) { ShowMessage(adQry->Connection->Errors->Item[i]->Description); } } } 結果發現,程式沒去關掉 sql 的連線,(程式在運作時,會新增、刪除、修改資料庫內的資料 ) 本來運作正常(可以正常新增、刪除、修改) 卻有不定期,不規則的發生(當然不是常常發生), 連線失敗的錯誤訊息,(ms-sql 還在運作) 軟体重開就又可以連。 PS:軟体是不關掉的,要常期開著,因為有在收裝置上的資料,每天二十四小時運作。 所以想請問各位大大,是否有發生過?? 什麼情況下會發生之類的事(是什麼原因造成之間的 Connection 斷線)?? 是 ms-sql 本身服務的問題嗎?? 對 ms-sql 的設定管理不熟,是否有設定值可以解決這問題?? 更新 sercive pack 可以解決嗎?? 謝謝!!! 編輯記錄
2007 重新編輯於 2008-10-14 16:06:11, 註解 無‧
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
先試試利用 try...__finally, try...catch 等方法,看可不可以避免這個問題,例如:
[code cpp] TADOConnection *adoc=new TADOConnection(Application); TADOQuery *adoq=new TADOQuery(Application); try { adoc->ConnectionString="...略..."; try { adoc->Open(); if(adoc->Connected) { adoq->Connection=adoc; AnsiString aCmd="...略..."; adoq->Close(); adoq->SQL->Clear(); adoq->SQL->Add(aCmd); adoq->Open(); //...do something... } } catch(Exception &ex) { //...do something... } } __finally { if(adoq!=NULL) { adoq->Close(); delete adoq; } if(adoc!=NULL) { adoc->Close(); delete adoc; } } [/code]
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,我也寫過類似的程式,而且是用service ap 來完成。在電信公司24小時run。而你說的問題是可能發生的,尤其是瞬間server太忙也會無法連上。我是在catch 裡加了二行
Connection->Close(); Connection->Open(); 接下來再 loop至try,架構上大至是 while ( .....) { ...... ...... try { ...... } catch { ...... Connection->Close(); Connection->Open(); } Sleep(duration); //--此處可加上log 程式來記錄錯誤的時間與情形 }
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |