2016-07-31 2 views
-1

У меня есть следующий кодСтранное поведение Java PreparedStatement

try{ 
    sql = "Select Time, Text WHERE Sender =?"; 
    PreparedStatement stmt = conn.prepareStatement(sql); 
    stmt.setString(1, "ABC"); 
    rs = stmt.executeQuery(); 
}catch(SQLException){ 
    System.out.println(e.getMessage()); 
} 

И получить следующее сообщение об ошибке:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE Sender ='ABC'' at line 1

Существует в моем SQL запросе дополнительные ', как я могу это исправить?

ответ

4

Это не «лишний» ', это проблема. Вам действительно нужно, чтобы ваша БД понимала текст, который вы предоставляете.

Проблема в том, что вы выдаете инструкцию SELECT, запрашивающую поля из таблицы, которую вы не указали. Вам нужно добавить имя таблицы:

Select Time, Text FROM <tablename here> WHERE Sender =? 

Edit: Видимо MariaDB doesn't consider time and text as reserved words, как @Andreas отметил в комментарии по этому ответу.

+0

'TEXT' и' TIME' не [зарезервированные слова в MariaDB] (https://mariadb.com/kb/en/mariadb/reserved-words/#exceptions): * Некоторые ключевые слова являются исключениями по историческим причинам, и разрешены как некотируемые идентификаторы. К ним относятся: ..., 'TEXT',' TIME', ... *. – Andreas

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