2016-06-09 164 views
0

我希望SQL搜索來搜索基於siteid(integer),從account(table)refrencenooldrefrenceno,但我僅查詢搜索refrencno(varchar(15))oldrefrenceno(varchar(50))。當用戶輸入siteid來搜索數據時,它什麼都不顯示。where子句

Statement pst=null; 
pst=ccn.createStatement(); 
String a=txt_search.getText(); 
String sql = ""; 
try { 
    int s = Integer.parseInt(siteid.getText()); 
    sql ="select * from account WHERE siteid ="+s+" refrenceno='"+a+"' or oldrefrenceno='"+a+"' "; 
}catch (Exception ex){ 
    sql ="select * from account WHERE refrenceno='"+a+"' or oldrefrenceno='"+a+"' "; 
} 
ResultSet rs=pst.executeQuery(sql); 
+0

那麼什麼是你捕捉異常? –

+0

爲什麼從字符串將siteid.getText()轉換爲int並將其再次添加到字符串? – Mono

+0

使用字符串連接構造查詢是一種不好的做法,因爲它允許[SQL注入](https://en.wikipedia.org/wiki/SQL_injection)。改用[準備好的語句](https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html)。 – TEXHIK

回答

0

如果你想搜索基於三個字段然後將查詢應儘可能

sql ="select * from account WHERE siteid ="+s+" AND refrenceno='"+a+"' AND oldrefrenceno='"+a+"' "; 
+0

不,我只是想根據帳戶的三列搜索數據.textfield是一個 –

+0

你可以給表的描述 – Veeresh123

+0

感謝每一個問題已經解決 –