Синтаксическая ошибка JDBC4, но MySQL принимает запрос - PullRequest
0 голосов
/ 17 июня 2020

Я пробовал выполнить следующий запрос с JDBC4, что приводит к синтаксической ошибке:

SELECT m.* 
FROM schema.table m 
INNER JOIN (
    SELECT :id0 as id, :from0 as date_from, :to0 as date_to 
    UNION ALL SELECT :id1 as id, :from1 as date_from, :to1 as date_to 
) tmp 
ON tmp.id = m.id AND m.date BETWEEN tmp.date_from AND tmp.date_to

Как ни странно, когда я запускаю запрос через mysql (на том же сервере базы данных), запрос принят и запущен.

Сообщение об ошибке еще больше сбивает с толку, так как в строке 1 нет закрытия ).

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 ')' at line 1

Сервер работает MySQL 5.1.

1 Ответ

1 голос
/ 17 июня 2020

JDB C принимает параметры только в очень определенных c местах. Обычно вместо скалярных значений. Вы не можете использовать параметры для структурных элементов, таких как столбцы, таблицы или предложения SQL.

Если вам это нужно, вам следует рассмотреть Dynami c SQL или правильный SQL Инъекция.

...