2013-06-13 2 views
0

Я использую JDBC в JSP с PostGreSQL. Я хочу прочитать все значения строки с заданным тилем и интерпретировать из текстового поля, но оператор И не работает.Как использовать оператор AND в инструкции

// some code 
stmt = conn.createStatement(); 
res = stmt.executeQuery(          
       "SELECT * " + 
       "FROM album " + 
       "WHERE interpret = ? AND titel = ? " + 
       "ORDER BY interpret, titel ASC " 
       ); 
//... closte statements, etc. 

Не я получаю исключение синтаксиса для AND. У вас, ребята, есть советы?

+0

Вы задаете параметры на PreparedStatement до вызова executeQuery()? – Tap

+0

да, но только два для интерпретации и тита. , но как получить другие значения для этой конкретной строки в stmt.setString (1, ??), если я использую подготовленное утверждение? –

ответ

1

Вы не можете использовать переменные связывания в операторе, созданном с помощью createStatement. PreparedStatement - это то, с чем вам следует работать.

Использование:

stmt = conn.prepareStatement(); 
stmt.setString(1, interpretValue); //set the value for the first parameter to interpretValue 
stmt.setString(2, titleValue); //second parameter 

PreparedStatement является предпочтительным способом выполнения операторов SQL, так как оператор прекомпилируется. Это может быть более эффективным, чем Statement, особенно если один и тот же запрос выполняется несколько раз.

+0

Хорошо спасибо за быстрый ответ, я подумал, что это будет readyStatement(); , но как установить строковые значения для оператора? Мне нужно забрать их со стола прямо? но как это работает? –

+0

Использование одного из методов setXXX. stmt.setString (1, interpValue); –

+0

да, но как бы использовать другие значения строки? допустим, у меня есть setString (1, интерпретировать); setString (2, titel); setString (3, ???); и для 3 я хочу получить значение из строки, где интерпретация и тилит равны значениям из параметров –

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