2016-06-09 2 views
0

Я хочу поиск на основе siteid(integer), refrenceno и oldrefrenceno от account(table), но мои запросы поиска только refrencno(varchar(15)) и oldrefrenceno(varchar(50)). Он ничего не показывает, когда пользователь вводит siteid для поиска данных.SQL поиска, где положения

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

Нет, я просто хочу искать данные на основе трех столбцов account.textfield один –

+0

Вы можете дать описание таблицы – Veeresh123

+0

СПАСИБО КАЖДОЙ ОДНОЙ ПРОБЛЕМА РЕШАЕТ –

Смежные вопросы