PreparedStatement выбрасывает MySQLSyntaxErrorException - PullRequest
1 голос
/ 11 мая 2010

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

String query = "Select 1 from myTable where name = ? and age = ?";
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setString(1, name);
stmt.setInt(2, age);
ResultSet rs = stmt.executeQuery();

Всякий раз, когда я запускаю приведенный выше код, он выдает исключение в строке 2 (где объявляется PreparedStatement):

Error 0221202: SQLException = com.mysql.jdbc.exceptions.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 '? AND age = ?' at line 1

У кого-нибудь есть предложения по поводу того, что я делаю неправильно? Спасибо!

Ответы [ 2 ]

1 голос
/ 11 мая 2010

Вы можете попробовать это

String query = "Select 1 from myTable where `name` = ? and age = ?";

или

String query = "Select count(*) from myTable where `name` = ? and age = ?";  

В любом случае, ваш код отлично работает для меня;
Вы уверены, что в вашей строке нет специальных символов?
Какие версии MySQL и драйвера используются?
Это правильный код?

0 голосов
/ 11 мая 2010

Похоже, класс PreparedStatement поддерживает только параметризованные списки SQL "IN". Похоже, вы хотите изменить его на использование функции prepareCall:

CallableStatement stmt = conn.prepareCall(query);

И CallableStatement расширяет PreparedStatement, поэтому внести изменения действительно просто.

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