如何在java中创建一个带有多个可选where子句的搜索语句?

时间:2013-10-21 06:34:00

标签: java mysql database

以下是一般搜索的代码:

     int row = jTable_accounts.getSelectedRow();
    String Table = (jTable_accounts.getModel().getValueAt(row, 0).toString());
      String sql ="select c.customer_id as 'Customer No.', customer_name as 'Name',a.account_id as 'Account No.',DIA,a.balance as 'Current Balance',a.outstanding_amt as'Outstanding Amt.' from customer c inner join customer_details cd on cd.customer_id=c.customer_id inner join account a on a.customer_id=c.customer_id where a.account_id= '"+Table+"' ";

因此,结果将显示在jtable中,但是,我想添加4或5个文本框,这些文本框应根据客户名称,未付金额等过滤结果。这些文本框应该是可选条目,如果是用户不会向应用程序显示常规输出(上述代码)的任何文本框输入任何值。

我假设应该在select语句中添加一些where子句但我不确定它应该是可选的。

以下是三个表格以获取更多信息:

客户:

     customer_id     DIA     customer_name             birth_date    
     --------------  ------  ------------------------  ------------- 
     1               32       Ahmad mohammad bin afif  (null)        
     2               10       mohammad ahmad bin afif   (null) 

customer_details:

     customer_id     phone_no1     phone_no2     address_line1     address_line2    
     --------------  ------------  ------------  ----------------  ---------------- 
     1               0111231415    019123443     bukit             (null)           
     2               01345532      (null)        kl                serdang  

帐户:

    account_id     balance     outstanding_amt     customer_id    
    -------------  ----------  ------------------  -------------- 
    1              12530.23    1821.3              1              
    2              2040.13     125.3               1              
    3              213455      1234.3              2                            

1 个答案:

答案 0 :(得分:0)

您应该检查文本框修剪后的值是否为空,然后,如果没有,您可以在查询中构建额外的过滤器。

e.g。

if (textField1.getValue().trim().length > 0) {
  query += " and COLUMN1 = " + textField1.getValue().trim() + " ";
}
if (textField2.getValue().trim().length > 0) {
  query += " and COLUMN2 = " + textField2.getValue().trim() + " ";
}

。    。    

因为您有一个基本查询,其中您声明了“where”语句,您只需要检查文本字段是否为空以添加“和”语句。