線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1183
推到 Plurk!
推到 Facebook!

再次請問: 程式在MS SQL Server關閉後,如何重新連接?

答題得分者是:elase
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-22 15:41:54 IP:219.145.xxx.xxx 未訂閱
各位先進好!     我希望程式能做如下處理:  1)程式在MS SQL Server關閉後,傳送資料應秀:   raise exception.create('不能連接料!') ;    2)在MS SQL Server重新啟動後,應該能重新連接。     Code 如下: 
  if ADOConnection1.Connected=false then 
     ADOConnection1.Connected:=true; 
  try
     adoquery1.Close;
     adoquery1.sql.Clear;
     adoquery1.sql.Add('Insert Into std');
     adoquery1.sql.add('(ID,');
     adoquery1.sql.add('Name,');
     adoquery1.sql.add('Book');
     adoquery1.sql.add(') values (');
     adoquery1.sql.add(' ''' edit1.text ''',');
     adoquery1.sql.add(' ''' label1.caption ''', ');
     adoquery1.sql.add(' ''' label2.caption ''') ');
     adoquery1.execsql;
  except
     raise exception.create('不能連接資料庫!');
  End;
實際測試, 1)在MS SQL Server關閉後,傳送資料並未顯示raise exception.create('不能連接料!'); 刪除 if ADOConnection1‧Connected=false then ADOConnection1‧Connected:=true; 則可以顯示raise exception.create('不能連接料!'); 2) 但是只有加上 if ADOConnection1‧Connected=false then ADOConnection1‧Connected:=true; 在MS SQL Server重新啟動後,才能夠重新連接,如果刪除則不能 請問是否有萬全之策,謝謝!
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-22 17:10:02 IP:61.219.xxx.xxx 未訂閱
試試 try ADOConnection1.Open adoquery1.Close; adoquery1.sql.Clear; adoquery1.sql.Add('Insert Into std'); adoquery1.sql.add('(ID,'); adoquery1.sql.add('Name,'); adoquery1.sql.add('Book'); adoquery1.sql.add(') values ('); adoquery1.sql.add(' ''' edit1.text ''','); adoquery1.sql.add(' ''' label1.caption ''', '); adoquery1.sql.add(' ''' label2.caption ''') '); adoquery1.execsql; except raise exception.create('不能連接資料庫!'); End;
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-22 17:58:02 IP:61.134.xxx.xxx 未訂閱
感謝前輩elase 回應!   
 
 經實際測試: 
   發現在Ms SQL Server重新啟動後,不能重新連接資料庫,仍然顯示raise   exception.create('不能連接資料庫'); 
 
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-22 19:37:29 IP:219.145.xxx.xxx 未訂閱
請各位先進指點一下,我想這個問題應該不是很複雜呀!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-22 20:49:43 IP:202.39.xxx.xxx 未訂閱
保留這段:
if ADOConnection1.Connected=false then 
     ADOConnection1.Connected:=true; 
在 except 發生時, 將 ADOConnection1.Connected 設為 False 呢? --- --<-<-<@
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-22 22:13:50 IP:61.185.xxx.xxx 未訂閱
感謝前輩hager的熱心指點! 如果保留 if ADOConnection1.Connected=false then ADOConnection1.Connected:=true; 在MS SQL Server關閉後,不能執行到Except 故將 ADOConnection1.Connected 設 False沒有作用
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-23 09:20:54 IP:61.219.xxx.xxx 未訂閱
再試試 try ADOConnection1.Open adoquery1.Close; adoquery1.sql.Clear; adoquery1.sql.Add('Insert Into std'); adoquery1.sql.add('(ID,'); adoquery1.sql.add('Name,'); adoquery1.sql.add('Book'); adoquery1.sql.add(') values ('); adoquery1.sql.add(' ''' edit1.text ''','); adoquery1.sql.add(' ''' label1.caption ''', '); adoquery1.sql.add(' ''' label2.caption ''') '); adoquery1.execsql; except begin ADOConnection1.Close; raise exception.create('不能連接資料庫!'); end End; 如果不行 try ADOConnection1.Connected:=true; adoquery1.Close; . . adoquery1.execsql; except begin ADOConnection1.Connected:=false; raise exception.create('不能連接資料庫!'); end; End;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-23 09:26:28 IP:202.39.xxx.xxx 未訂閱
蠻奇怪的, 既然 SQL Server 已經關閉 ADOQuery1 的 Insert 可以成功 而不會觸發 except? --- --<-<-<@
系統時間:2024-06-24 20:17:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!