2013-12-07 2 views
0

Предположите, что я бы хотел искать в моей базе данных одну или несколько разных полей. Теперь я не знаю, сколько из этих полей у меня есть. Так что я сделал функцию, которая принимает их все в качестве аргумента, но пустые строки для тех, которые не применимы (или 0 для Интс)Сделайте SQL-запрос с неизвестным номером ANDs

findSometing(int serial, String att1, String att2, String att3) 

Теперь, когда я делаю запрос SELECT * FROM TableName WHERE я не могу определить, куда поместить мой AND команд. У кого-нибудь есть хорошее решение этой проблемы? Я могу сделать это с большим количеством утверждений if, но это грязно. Просто добавлю, что я использую JDBC.

+0

Вы когда-нибудь слышали о [MyBatis] (http://mybatis.github.io/mybatis-3/dynamic-sql.html)? –

+0

Я могу использовать только JDBC – Arijoon

+0

Вы просто хотите проверить равенство каждого столбца на соответствующий аргумент, переданный в? –

ответ

2
String query = "SELECT * FROM TableName WHERE 1=1"; 
if(a!=null) 
    query+="AND a=?"; 
if(b!=null) 
    query+="AND b=?"; 

PreparedStatement stmt ... 
+0

omg СПАСИБО. Я, что сделает его намного проще – Arijoon

+1

Лучше использовать StringBuilder для динамических строк manupulations. – Salil

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