Discussion:
[Java/JDBC]請教GUI介面的查詢語法
(时间太久无法回复)
疝氣
2006-08-14 07:05:32 UTC
Permalink
大家晚安:
請問大家,假設我有一個資料庫其某一個資料表有四個欄位,為
Time, Name, Date, Phone,然後在我的GUI介面也有這四個文字方塊,
那我知道查詢的語法為:
sqlCmd = select * from TableName where Time = 'Time.getText()' and
Name = 'Name.getText()' and Date = 'Date.getText() and
Phone = 'Phone.getText()';

好,現在假設,使用者只有輸入Time and Date,那語法應該變成
sqlCmd = select * from TableName where Time = 'Time.getText()' and
Date = 'Date.getText()';
而不是一開始最上面的語法

那我的程式邏輯應該要怎麼設計,才能變成我想要的下面這種語法(就是使用者輸入
幾個文字方塊,我的條件是會跟著對應),
不知道有沒有先進可以提供比較好的方法,謝謝。

--
台灣溫泉討論區~www.bearpipi.com.tw

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.132.157
骨頭
2006-08-14 07:38:30 UTC
Permalink
※ 引述《Harifucks (疝氣)》之銘言:
: 大家晚安:
: 請問大家,假設我有一個資料庫其某一個資料表有四個欄位,為
: Time, Name, Date, Phone,然後在我的GUI介面也有這四個文字方塊,
: 那我知道查詢的語法為:
: sqlCmd = select * from TableName where Time = 'Time.getText()' and
: Name = 'Name.getText()' and Date = 'Date.getText() and
: Phone = 'Phone.getText()';
: 好,現在假設,使用者只有輸入Time and Date,那語法應該變成
: sqlCmd = select * from TableName where Time = 'Time.getText()' and
: Date = 'Date.getText()';
: 而不是一開始最上面的語法
: 那我的程式邏輯應該要怎麼設計,才能變成我想要的下面這種語法(就是使用者輸入
: 幾個文字方塊,我的條件是會跟著對應),
: 不知道有沒有先進可以提供比較好的方法,謝謝。

用String去串 (StringBuffer更好 XD)

if(有資料1) 把資料1的條件加入String
if(有資料2) 把資料2的條件加入String

當然中間要怎麼放and 之類的問題就自己想吧 XD
加個flag也可以解決問題


還有一種作法是預設都是使用萬用字元 (像*)
如果它沒有選定特別條件 就讓它的條件式虛化

--
 String temp="relax"; | Life just like programing
 while(buringlife) String.forgot(temp); | to be right or wrong
 while(sleeping) brain.setMemoryOut(); | need not to say
 stack.push(life.running); | the complier will
 stack.push(scouting.buck()); | answer your life
 stack.push(bowling.pratice()); | Bone everything

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.240.58
愚者
2006-08-14 17:27:53 UTC
Permalink
※ 引述《Harifucks (疝氣)》之銘言:
: 大家晚安:
: 請問大家,假設我有一個資料庫其某一個資料表有四個欄位,為
: Time, Name, Date, Phone,然後在我的GUI介面也有這四個文字方塊,
: 那我知道查詢的語法為:
: sqlCmd = select * from TableName where Time = 'Time.getText()' and
: Name = 'Name.getText()' and Date = 'Date.getText() and
: Phone = 'Phone.getText()';
: 好,現在假設,使用者只有輸入Time and Date,那語法應該變成
: sqlCmd = select * from TableName where Time = 'Time.getText()' and
: Date = 'Date.getText()';
: 而不是一開始最上面的語法
: 那我的程式邏輯應該要怎麼設計,才能變成我想要的下面這種語法(就是使用者輸入
: 幾個文字方塊,我的條件是會跟著對應),
: 不知道有沒有先進可以提供比較好的方法,謝謝。

你是想這樣寫嗎@@?
http://www.javaworld.com.tw/jute/post/view?bid=6&id=90899&tpg=1&ppg=1&sty=1

可是用變動的sql,是危險的。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.26.34.213
hpeter
2006-08-15 01:12:09 UTC
Permalink
※ 引述《qrtt1 (愚者)》之銘言:
: ※ 引述《Harifucks (疝氣)》之銘言:
: : 不知道有沒有先進可以提供比較好的方法,謝謝。
: 你是想這樣寫嗎@@?
: http://www.javaworld.com.tw/jute/post/view?bid=6&id=90899&tpg=1&ppg=1&sty=1
: 可是用變動的sql,是危險的。

可以找看看 PreparedStatement 這個好像會比較好

可以去除一些安全的問題

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.101.82

Loading...