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

Delphi連接mysql 要做登入畫面該如何開始呢?

答題得分者是:malanlk
b7307024
一般會員


發表:9
回覆:21
積分:6
註冊:2005-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-26 00:57:33 IP:220.132.xxx.xxx 未訂閱
各位大大好!小弟最近使用MyDAC元件,成功的連接Mysql了。現在我有個新手才會問的問題,就是我要做登入的畫面,該如何起始呢?我一開始是有想用edit元件,可是後來在Data Controls裡,也有看到DBEdit元件,使我搞混不知要使用哪一個!最重要的是,在輸入帳號跟密碼後,我要怎麼樣比對Mysql裡的資料呢?可以請各位大大幫我詳細的解答嗎?謝謝!
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-26 01:44:56 IP:61.219.xxx.xxx 未訂閱
用 Edit... DBEdit 是所謂的 Data Aware 元件, 必須要和 Table/Query/DataSet 及 DataSource 合在一起用來編輯資料表內欄位的內容. 你只是要做登入, 所以應該是 用幾個 Edit 輸入 Server, UserName, Password 資料後, 代入 TMyConnection 的 Server, UserName, Password三個 Propertys. 再呼叫 TMyConnection.Connect 做登入及連接. 是不是先去看一些基本入門的書, 有不懂的地方再來問....
b7307024
一般會員


發表:9
回覆:21
積分:6
註冊:2005-07-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-26 15:28:19 IP:220.132.xxx.xxx 未訂閱
感謝前輩的回覆!但是我覺得你這個方法是要讓我登入連接Mysql用的 可是我想要的是,在Mysql裡有一個user的資料表,然後我在edit輸入的資料是要跟user資料表裡的username欄位做比對,若有此帳號再比對密碼是否正確(這是我的想法),可是我搞不清楚的地方是,如:a:=edit1.text,此時a怎麼跟user裡的username欄位的每一筆資料比對是否相等呢?麻煩前輩大大了!
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-26 17:56:49 IP:203.69.xxx.xxx 未訂閱
拉ㄧ個 TMyQuery 元件放到 Form 上 MyQuery1.SQL.Clear; MyQuery1.SQL.Add(Format('SELECT COUNT(*) FROM ..username="%s" and password="%s"...',[EditUserName.Text,EditPassword.Text]) MyQuery1.ExecSQL; UserExists := (MyQuery1.Fields[0].AsInteger=1);
b7307024
一般會員


發表:9
回覆:21
積分:6
註冊:2005-07-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-29 16:41:47 IP:220.132.xxx.xxx 未訂閱
感謝之前大大的回覆!小弟回去事了一下,漸有斬獲!不過我又遇到新的問題了! 我弄兩個edit作帳密的輸入及一個button做按鈕登入在form上,然後在按鈕裡寫了下列程式碼: MyQuery1.SQL.Text:='SELECT * FROM users where name=''' edit1.text ''' AND password=''' edit2.text ''''; MyQuery1.Execute; MyQuery1.SQL.Text:=IntToStr(MyQuery1.RecordCount); if (MyQuery1.RecordCount > 0) then ShowMessage('success'); 起先我是先測試 MyQuery1.SQL.Text:=IntToStr(MyQuery1.RecordCount); 將MyQuery1.SQL.Text改成edit3.text 測試輸入正確的值得1及不正確的值得0,結果可以正常執行,但我加入if (MyQuery1.RecordCount > 0) then ShowMessage('success'); ,正常來說MyQuery1.RecordCount > 0 會得到true 就會顯示新視窗 success 但我執行後,結果沒有動靜,那可以請各位大大幫我看看錯在哪裡嗎?謝謝!
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-29 19:04:56 IP:203.69.xxx.xxx 未訂閱
MyQuery1.SQL.Text:='SELECT * FROM users where name='''+ edit1.text + ''' AND password=''' + edit2.text + ''''; MyQuery1.Open; //MyQuery1.SQL.Text:=IntToStr(MyQuery1.RecordCount); if (MyQuery1.RecordCount > 0) then ShowMessage('success'); MyQuery1.Close; 發表人 - malanlk 於 2005/08/29 19:05:51
b7307024
一般會員


發表:9
回覆:21
積分:6
註冊:2005-07-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-30 08:43:24 IP:220.132.xxx.xxx 未訂閱
真是感謝 malanlk前輩的幫助,小弟將問題解決了!希望之後還能給前輩多多教導,謝謝!
b7307024
一般會員


發表:9
回覆:21
積分:6
註冊:2005-07-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-30 17:09:23 IP:220.132.xxx.xxx 未訂閱
再問一個問題好了 為什麼最後要加上一個 MyQuery1.Close; 是為了釋放記憶體嗎?
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-08-30 18:04:49 IP:203.69.xxx.xxx 未訂閱
將 MyQuery1 關閉就跟 關閉 Table ㄧ樣, 如果你要用 DBGrid 顯示資料, 那就不必做 Close, 可以等到資料不用再顯示的時候(比如說 Form Close)再 Close 就可以了...
系統時間:2024-05-02 19:32:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!