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

請教如何動態設定ADOConnection.ConnectionString?

答題得分者是:hagar
qshljg
一般會員


發表:1
回覆:6
積分:1
註冊:2003-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-13 11:37:47 IP:218.14.xxx.xxx 未訂閱
我剛學三層架構,現遇到一個問題,向各位請教! 服務器採用ADO連接數據庫,想能夠動態編輯ConnectionString連接字串,另外寫了一支程式去設定ConnectionString,存入註冊表中,在ADOConnection.BeforeConnect中先讀出連接字串,填入ADOConnection中,客戶端用SocketConnection連接服務器,不知道這樣做為何連接時會出錯,而且是'嚴重錯誤? 謝謝!
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-13 11:58:52 IP:61.218.xxx.xxx 未訂閱
有何錯誤訊息? 請詳述    
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-13 13:23:48 IP:203.204.xxx.xxx 未訂閱
引言: 我剛學三層架構,現遇到一個問題,向各位請教! 服務器採用ADO連接數據庫,想能夠動態編輯ConnectionString連接字串,另外寫了一支程式去設定ConnectionString,存入註冊表中,在ADOConnection.BeforeConnect中先讀出連接字串,填入ADOConnection中,客戶端用SocketConnection連接服務器,不知道這樣做為何連接時會出錯,而且是'嚴重錯誤? 謝謝!
試試改在RemoteDataModule的Create事件給ConnectionString。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
qshljg
一般會員


發表:1
回覆:6
積分:1
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-13 13:37:46 IP:218.14.xxx.xxx 未訂閱
有何錯誤訊息? 請詳述 錯誤訊息是"Either BOF or EOF is true,or the current record has been deleted, Requested Operation requries a current record." 我服務器端的程式碼如下: procedure Ttestsrv.ADOConnection1BeforeConnect(Sender: TObject); var reg:Tregistry; begin reg:=MyOpenKey;//打開註冊表 if reg.ValueExists('Adoconnectstring') then ADOConnection1.Connectionstring:=reg.ReadString('Adoconnectstring'); ADOConnection1.DefaultDatabase:='OmiSQL01'; MyCloseKey(reg);//關閉註冊表 end; 發表人 - qshljg 於 2003/03/13 13:53:48
qshljg
一般會員


發表:1
回覆:6
積分:1
註冊:2003-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-13 13:41:11 IP:218.14.xxx.xxx 未訂閱
試試改在RemoteDataModule的Create事件給ConnectionString。 謝謝,我試了一下,這樣運行時,服務器沒有回應,成當機狀態,無法關閉程式,請問還有其他解決辦法嗎?
hagar
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-13 13:55:39 IP:202.39.xxx.xxx 未訂閱
這是 Delphi 5 對 ADO2.6 的 Bug 參考: http://forum.vclxx.org/topic.php?TOPIC_ID=8675&FORUM_ID=5&CAT_ID=2&Topic_Title=½аÝado&Forum_Title=Database --- Have you ever wondered what it would be like?
qshljg
一般會員


發表:1
回覆:6
積分:1
註冊:2003-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-13 14:44:59 IP:218.14.xxx.xxx 未訂閱
引言: 這是 Delphi 5 對 ADO2.6 的 Bug 參考: http://forum.vclxx.org/topic.php?TOPIC_ID=8675&FORUM_ID=5&CAT_ID=2&Topic_Title=%BD%D0%B0%DDado&Forum_Title=Database --- Have you ever wondered what it would be like?
非常感謝您的回答! 現在的問題是,在程序服務器中設定固定的連接字串,可以取出資料,資料表格也有資料記錄,我現在想要的是,能夠在運行時可以動態改變ADO的連接字串,並且改變之后能夠儲存起來,這樣就可以變更資料庫和孤服務器.
hagar
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-13 15:23:50 IP:202.39.xxx.xxx 未訂閱
1.用 PromptDataSource(Handle, ADOConnection1.ConnectionString); 2.
uses ADOConed;
begin
  EditConnectionString(ADOConnection1);
end;
--- Have you ever wondered what it would be like?
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-13 17:55:56 IP:203.204.xxx.xxx 未訂閱
引言: 試試改在RemoteDataModule的Create事件給ConnectionString。 謝謝,我試了一下,這樣運行時,服務器沒有回應,成當機狀態,無法關閉程式,請問還有其他解決辦法嗎?
喔,忘了說,在Create事件,不能做太多事,不然會這樣,我是先用一個procedure由前端呼叫,將要給ConnectionString的存在一個公用變數,然後在Create時在給ConnectionString,當然這是不同RemoteDataModule! 同一個直接在procedure給即可。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
qshljg
一般會員


發表:1
回覆:6
積分:1
註冊:2003-03-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-13 20:35:54 IP:218.14.xxx.xxx 未訂閱
引言: 喔,忘了說,在Create事件,不能做太多事,不然會這樣,我是先用一個procedure由前端呼叫,將要給ConnectionString的存在一個公用變數,然後在Create時在給ConnectionString,當然這是不同RemoteDataModule! 同一個直接在procedure給即可。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
謝謝!你的意思是說在應用程序服務器的增加一個接口,在增加一個方法,在客戶端調用,產生ConnectionString的值,然後在Create時再傳給ADOConnect.ConnectionString,我要再試一下!非常感謝!
qshljg
一般會員


發表:1
回覆:6
積分:1
註冊:2003-03-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-13 20:47:05 IP:218.14.xxx.xxx 未訂閱
引言: 1.用 PromptDataSource(Handle, ADOConnection1.ConnectionString); 2.
uses ADOConed;
begin
  EditConnectionString(ADOConnection1);
end;
--- Have you ever wondered what it would be like?
非常感謝您!我按照您說的把ADOExpress進行了升級,果然可以取得資料了,原來真的是delphi本身的問題,現在運行一切正常,還有我在ADOConnection的BeforeConnect事件中填入Connectionstring它的值,是否造成其他負擔,多人使用時是否會有問題,還是應該在RemoteDataModule的create中填入參數?
qshljg
一般會員


發表:1
回覆:6
積分:1
註冊:2003-03-13

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-03-14 16:27:33 IP:218.14.xxx.xxx 未訂閱
引言: 喔,忘了說,在Create事件,不能做太多事,不然會這樣,我是先用一個procedure由前端呼叫,將要給ConnectionString的存在一個公用變數,然後在Create時在給ConnectionString,當然這是不同RemoteDataModule! 同一個直接在procedure給即可。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
我按照你的做法,試了一下,結果是在方法中填入ConnectionString可行,而存放到變數中,在Create 中傳給ConnectionString,會出現"login failed for users 'Administrator'"錯誤!不知是什麼問題?
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-03-14 18:03:27 IP:203.204.xxx.xxx 未訂閱
引言: 謝謝!你的意思是說在應用程序服務器的增加一個接口,在增加一個方法,在客戶端調用,產生ConnectionString的值,然後在Create時再傳給ADOConnect.ConnectionString,我要再試一下!非常感謝!
大概是這樣沒錯!
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-03-14 18:07:57 IP:203.204.xxx.xxx 未訂閱
引言: 非常感謝您!我按照您說的把ADOExpress進行了升級,果然可以取得資料了,原來真的是delphi本身的問題,現在運行一切正常,還有我在ADOConnection的BeforeConnect事件中填入Connectionstring它的值,是否造成其他負擔,多人使用時是否會有問題,還是應該在RemoteDataModule的create中填入參數?
負擔應該還好,只在每次連線前,多人使用要看RemoteDataModule的Instancing和Threading Model的設定,來設計程式。在哪裡給都可以,只要能Run。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-03-14 18:10:32 IP:203.204.xxx.xxx 未訂閱
引言: 我按照你的做法,試了一下,結果是在方法中填入ConnectionString可行,而存放到變數中,在Create 中傳給ConnectionString,會出現"login failed for users 'Administrator'"錯誤!不知是什麼問題?
這我也不知道,不過你可Debug看看,是不是值沒有成功存入變數。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
cocodi
一般會員


發表:21
回覆:65
積分:17
註冊:2002-06-27

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-04-11 02:11:28 IP:61.222.xxx.xxx 未訂閱
請教各位高手,延續樓上同學的問題: 使用環境:DB-Server(NT2000 MS-SQL) AP-Server(NT2000) Client( Win98) 作成三階架構 AP-SERVER使用Component 為 ADOConnection ADOQuery DataSetProvider Client端 使用Component SocketConnection ClientDataSet DataSource 我的用途是希望Client執行的軟體可以依選擇的的分公司代號分別進入不同的資料庫中(因為某些原因,資料庫要分開放),假設有3間分公司,它們的DataBase Name 分別為 STOR1,STOR2,STOR3,每個 DataBase 假設各有Custom,OrderMast, OrderDetail等三個Table , 我的問題是,我該如何做才能使用同一組Client與Ap-Server的軟體,依不同的登入分公司代號去開啟不同的資料庫查詢,如果再將我的問題說的直接一點就是要如何用Client端的登入去改影響 AP-Application 中的ADOConnection.ConnectionString 來達成取得不同資料源的目地, 還請見諒,講了這麼一堆,P.S.我找了KTOP關於ADO的Topic還有李維先生的分散式多層應用(系統篇)好像沒講到這些 Cocodi
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-04-11 10:17:15 IP:203.204.xxx.xxx 未訂閱
引言: 請教各位高手,延續樓上同學的問題: 使用環境:DB-Server(NT2000 MS-SQL) AP-Server(NT2000) Client( Win98) 作成三階架構 AP-SERVER使用Component 為 ADOConnection ADOQuery DataSetProvider Client端 使用Component SocketConnection ClientDataSet DataSource 我的用途是希望Client執行的軟體可以依選擇的的分公司代號分別進入不同的資料庫中(因為某些原因,資料庫要分開放),假設有3間分公司,它們的DataBase Name 分別為 STOR1,STOR2,STOR3,每個 DataBase 假設各有Custom,OrderMast, OrderDetail等三個Table , 我的問題是,我該如何做才能使用同一組Client與Ap-Server的軟體,依不同的登入分公司代號去開啟不同的資料庫查詢,如果再將我的問題說的直接一點就是要如何用Client端的登入去改影響 AP-Application 中的ADOConnection.ConnectionString 來達成取得不同資料源的目地, 還請見諒,講了這麼一堆,P.S.我找了KTOP關於ADO的Topic還有李維先生的分散式多層應用(系統篇)好像沒講到這些 Cocodi
使用ClientDataSet ADO有無法Locate、Filter、參數使用中文問題。最近在寫三層式系統架構文章,寫到這裡就不曉得怎樣寫下去了,只想怎麼去解決! Delphi5和Delphi6都有這個問題,Delphi7沒測過。 言歸正傳: 1.讓使用者選擇登入的公司別 2.所有使用者只存到一個Database,再判斷使用者是要登入哪一個資料庫 在AppServer判斷後,改變ADO ConnectionString,前提是每一個連進的Client都要有一份對應的Server程式,這樣才不會相衝,怎樣判斷?在後端的Form上秀出登入者的RDM名稱即可。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
cocodi
一般會員


發表:21
回覆:65
積分:17
註冊:2002-06-27

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-04-12 14:03:47 IP:61.59.xxx.xxx 未訂閱
Jieshu兄: 個人領誤不到,可否再說明清楚一點 cocodi
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-04-14 19:22:00 IP:203.204.xxx.xxx 未訂閱
引言: Jieshu兄: 個人領誤不到,可否再說明清楚一點 cocodi
不然你就先試看看,切過去有沒有問題,先傳參數給Server,Server依參數給ADOConnection1不同的ConnectionString
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
cocodi
一般會員


發表:21
回覆:65
積分:17
註冊:2002-06-27

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-04-15 21:20:50 IP:61.222.xxx.xxx 未訂閱
謝謝jieshu兄,我照你說的方法,在AP-SERVER 寫一段 procedure togetpara(tpara:String); 在 commandtext 送出前,用tpara來接收 client-ap傳過來的 string, 再將string 代入ADOConnection 再open client端的 ClientDataSet.open即可 問提已經解決了 THANK'S
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-04-16 09:24:44 IP:203.204.xxx.xxx 未訂閱
引言: 謝謝jieshu兄,我照你說的方法,在AP-SERVER 寫一段 procedure togetpara(tpara:String); 在 commandtext 送出前,用tpara來接收 client-ap傳過來的 string, 再將string 代入ADOConnection 再open client端的 ClientDataSet.open即可 問提已經解決了 THANK'S
記得開兩個Client同時連,但用不同公司代號登入,看會不會影響前一個登入的資料庫連接。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
cocodi
一般會員


發表:21
回覆:65
積分:17
註冊:2002-06-27

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-04-16 22:51:04 IP:61.222.xxx.xxx 未訂閱
謝謝jieshu兄的提醒,我先完成目前的code後會再test 你所提醒的事,再將結果post上來與大家分享
系統時間:2024-04-20 20:12:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!