2014-02-05 4 views
0

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

String full = "update ? set name = ? where id = ?"; 

но когда я удалить первый? и введите название таблицы «Все идет идеально» ... Любые предложения?

ответ

5

В JDBC местозаполнитель ? обозначает значение и не может стоять за идентификатор, например имя таблицы. Он может использоваться там, где может использоваться буквальное значение. Вы заметите, что у вас не может быть ?, где ожидается имя столбца.

+1

Это не только для JDBC - это для всех параметризованных запросов. Вы не можете параметризовать имя_таблицы или имя столбца – longofest

+0

** спасибо ** Я получил его. – Scorpion

+1

Забавно, что с MySQL Connector/J замена заполнителей значениями параметров происходит в драйвере, а не на сервере. С этим драйвером - вопреки драйверам, которые фактически готовят сервер запросов - вы можете использовать '?' Всюду, он просто заменяется цитируемой строкой; поэтому для MySQL он не работает «случайно», потому что результирующий запрос «обновляет» theTableName «set ....», который является синтаксической ошибкой. –

0

Вы не можете использовать заполнители для имен таблиц.

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