Странное поведение с использованием ключевого слова HSQLDB - PullRequest
0 голосов
/ 10 октября 2011

У меня странный результат при создании новой таблицы в HSQLDB. Из документации HSQLDB «пользователь» является ключевым словом, обычно мы не можем использовать это значение для имени таблицы или имени столбца, если оно не заключено в двойные кавычки.

Однако я могу создать таблицу базы данных с именем «USER» и таблицу базы данных DATA_RESULT с одним именем столбца «user», без двойных кавычек в ключевом слове.

Проблема возникает при чтении данных из БД. Например, когда я выполняю: "select * from DATA_RESULT" и считываю значение «user» из ResultSet, это работает.

Если я выполню "select user from DATA_RESULT" или "SELECT * from DATA_RESULT where user = 1", произойдет ошибка. Оператор sql выполняется неправильно, ResultSet.next () всегда возвращает false.

Кроме того, из Списков ключевых слов для HSQLDB написано HyperSQL has two modes of operation, which are selected with the SET DATABASE SQL NAMES { TRUE | FALSE } to allow or disallow the keywords as identifiers. The default mode is FALSE and allows the use of most keywords as identifiers, в нем не указано, может ли «пользователь» использоваться в качестве идентификатора.

Я использую HSQLDB 2.0.0.

Это довольно запутанно. Кто-нибудь знает, что здесь происходит?

Заранее спасибо! Любое предложение будет полезно.

1 Ответ

1 голос
/ 10 октября 2011

USER - это функция для получения имени текущего пользователя. Например:

CALL USER

Вы, конечно, можете использовать USER в качестве имени таблицы или столбца.

В операторе SELECT используйте двойные кавычки вокруг имени.

CREATE TABLE DATA_RESULT ("USER" INT, DATA VARCHAR(100))
SELECT * FROM DATA_RESULT WHERE "USER" = 1

Если используются двойные кавычки, регистры должны совпадать.

Обратите внимание, что руководство на веб-сайте регулярно обновляется и в настоящее время соответствует последней версии 2.2.5.

...