2016-06-09 103 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

感谢每一个问题已经解决 –