Ошибка в запросе JDBC - PullRequest
       1

Ошибка в запросе JDBC

2 голосов
/ 23 января 2011
sql  = "select milk_rate from special_milk_rate 
        where code_producer_id=? and effective_from <= ? 
        and effective_till >= ?"

Я получаю ошибку в этом запросе, когда в моем коде JDBC

Исключение: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: в синтаксисе SQL имеется ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '? и эффективное_от <=? andffective_till> =? ' в строке 1

Но когда я запускаю его в командной строке MySQL с некоторыми значениями, он прекрасно работает там.

Ответы [ 2 ]

1 голос
/ 23 января 2011
ResultSet rst= prest.executeQuery(sql);

Это неверно. Должно быть executeQuery ().

SQL передается для выполнения при использовании Statement. Вместо этого он передается в PreparedStatement при использовании переменных привязки. Поскольку вы используете API-интерфейс Statement, JDBC выполняет его, не подставляя в переменные привязки, и интересуясь, что делать с буквальными вопросительными знаками.

0 голосов
/ 23 января 2011

Вы должны использовать подготовленные утверждения вместо «обычных» утверждений, чтобы заменить вопросительные знаки параметрами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...