Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用HSQLDB关键字的奇怪行为_Java_Hsqldb - Fatal编程技术网

Java 使用HSQLDB关键字的奇怪行为

Java 使用HSQLDB关键字的奇怪行为,java,hsqldb,Java,Hsqldb,在HSQLDB中创建新表时,我有一个奇怪的结果。从HSQLDB的文档中,“user”是一个关键字,通常情况下,我们不能将此值用作表名或列名,除非它是双引号 但是,我可以创建一个名为“USER”的数据库表,以及一个名为“USER”的数据库表DATA_RESULT,而无需重复引用关键字 从数据库读取数据时出现问题。例如,当我执行:“select*from DATA\u RESULT”并从结果集中读取“user”的值时,它就工作了 如果执行“从数据结果中选择用户”或“从数据结果中选择*用户=1”,则会

在HSQLDB中创建新表时,我有一个奇怪的结果。从HSQLDB的文档中,“user”是一个关键字,通常情况下,我们不能将此值用作表名或列名,除非它是双引号

但是,我可以创建一个名为“USER”的数据库表,以及一个名为“USER”的数据库表DATA_RESULT,而无需重复引用关键字

从数据库读取数据时出现问题。例如,当我执行:
“select*from DATA\u RESULT”
并从结果集中读取“user”的值时,它就工作了

如果执行
“从数据结果中选择用户”
“从数据结果中选择*用户=1”
,则会发生错误。sql语句执行不正确,ResultSet.next()始终返回false

此外,从中可以看出,
HyperSQL有两种操作模式,它们是通过设置数据库SQL名称{TRUE | FALSE}来选择的,以允许或不允许关键字作为标识符。默认模式为FALSE,允许将大多数关键字用作标识符
,它不说明是否可以将“user”用作标识符

我正在使用HSQLDB2.0.0

这很令人困惑。有人知道这里发生了什么吗


提前谢谢!任何建议都会有帮助。

USER是获取当前用户名称的函数。例如:

CALL USER
您当然可以使用USER作为表名或列名

在SELECT语句中,在名称周围使用双引号

CREATE TABLE DATA_RESULT ("USER" INT, DATA VARCHAR(100))
SELECT * FROM DATA_RESULT WHERE "USER" = 1
使用双引号时,大小写必须匹配

注:网站上的指南定期更新,目前与最新版本2.2.5相对应