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

如何讓程式開啟時才連線資料庫

缺席
wscken
初階會員


發表:28
回覆:75
積分:45
註冊:2003-08-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-10 17:21:45 IP:210.243.xxx.xxx 未訂閱
請問各位大大,如果在DataMoudle內使用dbExpress 的SqlConnection來連結MSSql資料庫,屬性都已經設定好, 只差Connected是False而已,我希望打開程式在去連線資料庫, 我的語法應該要怎麼下才好,站內的資料似乎跟我要的不太相同, 小的功力不夠,希望大大可以幫忙, 還有一個問題,如果像這個樣子的程式,是不是都要向另外一篇 在MSSQL關閉後再次Run,讓程式知道網路已恢復,這樣才是最好的做法呢?
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-10 18:07:35 IP:61.222.xxx.xxx 未訂閱
看不大懂你的問題,如果你是要在程式跑起來後才連到資料庫,就在你的MainForm的OnCreate事件裡去寫連資料庫的程式就好了,如果你已經在相關的元件裡都設定好屬性,那麼就只有一行要跑,就是把SqlConnection.Connected設為True即可.應該沒什麼問題才是. 另外,第二個問題提到"在MSSQL關閉後再次Run,讓程式知道網路已恢復",是指什麼?原則上client端只能在網路沒有問題,且DB Server有啟動的狀況下連接資料庫才能成功.
wscken
初階會員


發表:28
回覆:75
積分:45
註冊:2003-08-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-10 19:17:52 IP:210.243.xxx.xxx 未訂閱
版主大大,抱歉沒有講清楚我的問題.............. 問題發生在,我所有屬性都設定好,而且如果直接連線也沒有問題, 但是如果我想在OnCreate內寫DM_Conn.SQLConn.Connected := true; 卻會出現 Access violation at address 0040229C in module 'Project.exe'. Read of address 00000058. 所以我才會想問說是不是不能如此下語法 弟二個問題是因我看到 http://delphi.ktop.com.tw/topic.php?topic_id=30773 這裡的討論,所以才想問說,是不是大家都這樣做...
stillalive
初階會員


發表:7
回覆:148
積分:41
註冊:2004-04-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-10 21:33:03 IP:211.75.xxx.xxx 未訂閱
請問你在design time 將 connect := true 是否會這樣 ? 如果是請詳細寫出你程式架構與資料庫組態 , 並試著連單機資料庫看看 .
wscken
初階會員


發表:28
回覆:75
積分:45
註冊:2003-08-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-10 21:43:31 IP:210.243.xxx.xxx 未訂閱
請問你在design time 將 connect := true 是否會這樣 ? 如果是請詳細寫出你程式架構與資料庫組態 , 並試著連單機資料庫看看 . 就是在設計的時候直接用成True就可以執行,還不會出錯, 但是想要自己指定就會錯誤, 至於程式架構,就只是要在OnCreate內寫DM_Conn.SQLConn.Connected := true; 剩下的都沒有寫.....
stillalive
初階會員


發表:7
回覆:148
積分:41
註冊:2004-04-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-10 21:59:45 IP:211.75.xxx.xxx 未訂閱
建議你試著連本機interbase看看 , 先確定是否為資料庫問題 .
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-10 22:14:20 IP:211.20.xxx.xxx 未訂閱
引言: 至於程式架構,就只是要在OnCreate內寫DM_Conn.SQLConn.Connected := true; 剩下的都沒有寫.....
wscken 你好 你說的OnCreate應該主Form的Oncreate事件吧,主FormCreate之後其他的Form並未建立呀(包含DataModual)!所以在主Form.OnCreate中寫 DM_Conn.SQLConn.Connected := true;當然會Access violation 因為DM_Conn當未建立,建議寫在DM_Conn.OnCreate事件中就沒事了。希望沒猜錯!
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-10 23:03:17 IP:61.229.xxx.xxx 未訂閱
同意Chance36大大的說法,通常看到這種記憶體存取違規的錯誤訊息,十有八九是物件沒有建立就開始叫用物件.建議您在form的onCreate裡設個中斷點,看看程式跑到連接資料的code時是不是DataModule沒有被建立起來. 關於第二個問題,我不曉得您是否有特殊需求,或者您所寫的程式是ApServer,否則資料庫沒有啟動就是沒有啟動,為什麼要在資料庫上線後client端自動連線呢?如果是我的話,會在登入的功能按鈕裡去連接資料庫.連接上了,就讓登入的按鈕Disable,連接不上了(不管是登入ID/PWS錯了,或網路沒連上,DB沒跑起來)就讓登入的按鈕Enable,show登入失敗及可能發生的原因(如密碼錯誤或無法連接資料庫),讓使用者在排除錯誤原因後再重新登入. 給您一個參考.
wscken
初階會員


發表:28
回覆:75
積分:45
註冊:2003-08-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-11 01:48:41 IP:210.243.xxx.xxx 未訂閱
Chance36大大說的沒錯,真的是這個問題, 所以我有把OnCreate改到DataModual去執行了,不過像這樣, 我試了一下,不能從那邊執行Application.Terminate, 所以想,大概還是要從登入的功能按鈕再去檢查比較好.... 多謝各位大大的回答,謝謝你們...
hagar
版主


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-05-11 09:41:35 IP:202.39.xxx.xxx 未訂閱
Project -> Options 的 Forms 頁中 左邊有個 Auto-create forms 的 Listbox 把 Datamodule 移到 main form 前即可. -- 悟嗎?
wscken
初階會員


發表:28
回覆:75
積分:45
註冊:2003-08-05

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-05-11 11:17:40 IP:210.243.xxx.xxx 未訂閱
hagar大大,我本來就是如此做了, 試到現在,我覺得這種案子大概不適合如此檢查,因為可以在程式執行時 檢查後關掉,但是這樣一來必須再多等一段時間,也就是SqServer TimeOut的時間 所以會發生沒有反應的情形...
系統時間:2024-06-26 13:50:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!