2015-04-05 5 views
0

Я пробовал несколько идей с помощью подготовленного заявления, но никто из них не работал. К ним относятся:Как использовать зарезервированные слова в SQL-запросе?

String insertSQL = "INSERT INTO APP.TEST (Name, 'role') VALUES (?, ?)"; 

String insertSQL = "INSERT INTO APP.TEST (Name, [role]) VALUES (?, ?)"; 

String insertSQL = "INSERT INTO APP.TEST (Name, role) VALUES (?, ?)"; 
+0

Что значит «никто из них не работал»? Что случилось? – nhgrif

+0

использовать 'role', он должен работать. Кажется, что чрезмерный поток удаляет символы. – Samir

+0

Я тоже пробовал это – user1036645

ответ

2

Apache Derby's documentation указывает, что ограниченные идентификаторы SQL может быть в двойных кавычках. Так что ваш SQL строка будет в конечном итоге выглядеть следующим образом:

INSERT INTO APP.TEST (Name, "role") VALUES (?, ?) 

Так что помещаются внутри строки, уже в двойных кавычках, обратная косая-бежать внутренние кавычки:

String insertSQL = "INSERT INTO APP.TEST (Name, \"role\") VALUES (?, ?)"; 

Дерби list of reserved words в настоящее время не задающие role как зарезервировано, но если в вашей реализации он, похоже, зарезервирован, вы должны его соответствующим образом процитировать.

+0

Я столкнулся с другой проблемой, которая представляет собой конфликт имен SQL с именем таблицы. Я попробовал String insertSQL = "INSERT INTO DATABASE. \" Пользователь \ "(имя, имя пользователя, пароль, \" role \ ")" + "VALUES (?,?,?,?)"; но это не сработало. – user1036645

+0

Цитата Обе части, я полагаю, как '\" DATABASE \ ". \" Пользователь \ "' - вот как выглядит пример документации. –

+0

Простите, конечно. Это была моя глупая ошибка. Он работает нормально. – user1036645

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