請問在MS SQL Server 關閉後 再次 Run 時 ,如何讓我的程式知道網路已恢復? |
尚未結案
|
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
各位先進好! 我使用的是MS SQL Server2000;
Delphi5:ADOconnection,ADOquery
我的設計思路是:
當我的程式遇到MS SQL Server關閉的情況下,先隱藏。
希望如果在MS SQL Server 再次 Run 後,我的程式再出現。
但是,一旦MS SQL Server關閉,超過ADOconnection connection timeOut,我的程式將一直隱藏,即使MS SQL Server 再次 Run 後也是如此。
Q:請問在MS SQL Server關閉後再次Run 時 ,如何
讓我的程式知道網路已恢復?
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
引言:要做到自動通知你的程式應不易,最簡單的應是做個 timer 在 onTimer 時 去嘗試連接justmade 版主所講的是可行的 MSSQL Server 預設的TCP Port 是 1433, 你只需要在 OnTimer 去測試即可 小弟以Indy 之IdTelnet 元件實作,簡易的方法如下,即可判別server 目前是否已啟動 try IdTelnet1.Host := 'server'; IdTelnet1.Port := 1433; IdTelnet1.Connect(); ShowMessage('連線成功'); except ShowMessage('連線失敗'); end;我的不是最好的方法,但應可行 |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
感謝 Timehuang 兄的指點!
我現在是這樣寫的:
procedure TForm1.Timer1Timer(Sender: TObject);
var
Blisten:boolean;
begin
powersock1.host='192.168.1.10';
powersock1.port:=1433;
try
powersock1.connect;
powersock1.connected:=true;
Blisten:=true;
except
powersock1.connected:=false;
Blisten:=false;
end;
powersock1.disconnect;
if Blisten then
begin
Form1.show;
Adoquery1‧close;//語句1
Adoquery1‧open; //語句2
‧‧‧‧
Adoquery1‧close;
Adoquery1‧sql‧add( select ‧‧‧);
Adoquery1‧OPEN;
‧‧‧‧
end;
end;
但實際上,即使語句1,2執行後,Adoquery1也一直是與網路斷開的,沒有重新連接資料庫。因此ADOquery沒有得到結果。
但是,書上說 Adoquery1‧close;後,再Adoquery1‧open; 可以重新連接資料庫。
請問這是為什麼呀?
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
改為這樣試看看
procedure TForm1.Timer1Timer(Sender: TObject); var Blisten:boolean; begin powersock1.host='192.168.1.10'; powersock1.port:=1433; try powersock1.connect; powersock1.connected:=true; Blisten:=true; except powersock1.connected:=false; Blisten:=false; SHOWMESSAGE('資料庫未啟動!!!'); exit; end; SHOWMESSAGE('資料庫已啟動!!!'); //powersock1.disconnect; if Blisten then begin Form1.show; Adoquery1‧close;//語句1 Adoquery1‧open; //語句2 ‧‧‧‧ Adoquery1‧close; Adoquery1‧sql‧add( select ‧‧‧); Adoquery1‧OPEN; ‧‧‧‧ end; end;TRY TRY SEE |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
請問你是用 adoquery 直接連 db 嗎. 沒有經過 adoconnection ??
procedure TForm1.Timer1Timer(Sender: TObject); var Blisten:boolean; begin powersock1.host='192.168.1.10'; powersock1.port:=1433; try powersock1.connect; powersock1.connected:=true; Blisten:=true; except powersock1.connected:=false; Blisten:=false; end; powersock1.disconnect; if Blisten then begin Timer1.Enabled := false; //以防止 timer 繼續觸發 onTimer 事件 Form1.show; |
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
Hi!TimHuang兄,我確實是用 adoquery 直接 db ,沒有經過 adoconnection 。我想你這樣問我: 一是我前面有些情況沒介紹清楚,剛開始我是使用了ADOconnection與ADOquery,但後來覺得我的程式只是在MS SQL SERVER 運行時,每做完一次處理按鍵盤'Enter' 一次,向資料庫增加一條Record,在MS SQL SERVER關閉時程式隱藏,因此就沒再用ADOconnection,直接用ADOquery。 二是你是否是看了李維先生的《delphi5‧x ADO/MTS/COM 專業程式設計》一書的原因,在這本書的第二章第一節講 '1‧TADOconnection元件部分'的第一段的最後一句話:"TADOConnection元件提供了和數據源建立連接的功能,因此它是應用程式一定會使用的元件"。注意:李維先生說是"一定會使用"‧ 但是在《Delphi 5 Developer's Guide》一書的第28‧8‧2 "ADOExpress 元件"中提到:這個元件(TADOConnection)與基於BDE的程式中的TDataBase元件類似,對於簡單的程式並沒有必要使用它。 通過我的測試:後者應該是正確的。
這是我的淺見啦,或許有前輩們有別的見解. 另外,我一直有一個簡單而重要的問題不太明白,按照我的理解,在MS SQL SERVER關閉後再次運行後,通過:
‧‧‧‧
Adoquery1‧close;
Adoquery1‧sql‧add( select ‧‧‧);
Adoquery1‧open;
‧‧‧‧
我的程式應該能夠再次與MS SQL SERVER連接,但實際與此相反。不知,這是否與我 set ADOQUERY1的 Properties有關,因為我程式的其它部分就與資料庫操作無關了呀‧
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 另外,我一直有一個簡單而重要的問題不太明白,按照我的理解,在MS SQL SERVER關閉後再次運行後,通過: ‧‧‧‧ Adoquery1‧close; Adoquery1‧sql‧add( select ‧‧‧); Adoquery1‧open; ‧‧‧‧ 我的程式應該能夠再次與MS SQL SERVER連接,但實際與此相反。不知,這是否與我 set ADOQUERY1的 Properties有關,因為我程式的其它部分就與資料庫操作無關了呀‧不好意思, 您還是沒有說明發生問題的錯誤訊息是什麼. 因為這是一個很重要的除錯參考. 另外關於 ADOConnection 的部分, 弟覺得對 db 的設定及管理有很大的幫助, 不過就您的程式中僅有一個 adoquery 的話, 應該就沒有太大的影響... |
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |