2013-03-06 3 views
0

У меня возникают проблемы с тем, что я считаю синтаксисом, для подготовленных утверждений.Подготовленные операторы с MySQL?

У меня есть следующий код

String query2="SELECT lname FROM school_student WHERE sid = ? ORDER BY sid;"; 

PreparedStatement ps = cn.prepareStatement(query2); 
ps.setInt(1, 3); 
ResultSet rs = ps.executeQuery(query2); 

Проблема, которую я имею, что я получаю сообщение об ошибке:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? ORDER BY sid' at line 1

Однако, когда я подставим " ?» в моем запросе на 3 запрос работает отлично, без ошибок, и дает мне то, что я хочу. Кажется, что-то не так с тем, как я устанавливаю значение «?» в моем запросе? Я использую неправильный синтаксис?

ответ

7

Просто используйте

ps.executeQuery(); 

(т.е. использовать перегруженный executeQuery() метод, который не принимает каких-либо аргументов). Вы уже передали запрос при подготовке заявления.

+0

'ps.executeQuery()' в своем примере. –

+0

Вы должны подчеркнуть, что это перегруженная версия. Мне потребовалось несколько секунд, чтобы понять, что вы говорите :) – adarshr

+0

спасибо, сейчас работает :) – zProgrammer

-1

Я думаю, что их это синтаксис проблема при подготовке запроса попробовать это ... Строка Query2 = "SELECT LName FROM school_student WHERE с.и.д. = + VariableName + ORDER Сидом;"

2

использовать этот запрос: -

Строка Query2 = "SELECT LName FROM school_student ГДЕ ИСС = "+ атрибут +" ORDER Сидом;";

и просто использовать

ps.executeQuery();

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