Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 PreparedStatement保留表名大小写_Java_Jdbc_Prepared Statement_Wildfly_H2 - Fatal编程技术网

Java PreparedStatement保留表名大小写

Java PreparedStatement保留表名大小写,java,jdbc,prepared-statement,wildfly,h2,Java,Jdbc,Prepared Statement,Wildfly,H2,我有一个Java代码段,运行在由MariaDB支持的WildFly服务器中: var stmt=conn.prepareStatement(“从车辆中选择*”; ResultSet rs=stmt.executeQuery(); 这给了我以下的例外: org.h2.jdbc.JdbcSQLException: Table "VEHICLES" not found; SQL statement: SELECT * FROM vehicles; [42102-193] 所以,很明显,它决定将表名

我有一个Java代码段,运行在由MariaDB支持的WildFly服务器中:

var stmt=conn.prepareStatement(“从车辆中选择*”;
ResultSet rs=stmt.executeQuery();
这给了我以下的例外:

org.h2.jdbc.JdbcSQLException: Table "VEHICLES" not found; SQL statement:
SELECT * FROM vehicles; [42102-193]

所以,很明显,它决定将表名大写,这是我不想要的。如何关闭它?

这是不可能的,默认情况下,SQL方言不区分大小写,但将表名存储为大写(某些方言将存储为小写)。这意味着如果使用
select*from vehicle
,实际上是从名为
vehicle
的表中进行选择,错误消息将反映该名称,因为表
vehicle
与表
vehicle
是不同的实体


如果要在错误消息中反映原始情况,需要从真正称为
车辆的表中进行选择。为此,您需要在所有SQL语句中引用对象名,例如
select*from“vehicle”
,或者-MariaDB和MySQL中的
select*from`vehicle`
。引用的对象名称保留其原来的大小写。

您确定这不仅仅是将其记录为大写吗?您是否尝试过将表名放入?因此,在Java中,这将是
“从\“车辆\”中选择*;”
。另外,您标记了mariadb,但错误是h2-是否相关?SQL不区分大小写。这里没有需要解决的问题。@user207421-这不是特定于实现的吗?关键词,我同意-没关系。但是对于-这不取决于RDBMS吗?也许还取决于它是如何配置的?@andrewjames True。我真正想知道的是,为什么OP对象指向只有开发人员才应该看到的错误消息。虽然对于某些DBMS(如Oracle)可能是这样,但我在Linux上运行了一个MariaDB实例,其中关键字不区分大小写,但对象名称(表、数据库、视图等)不区分大小写。我将它们定义为小写,因此它们必须以小写形式访问。不过我还是要试着引用一下MariaDB[dbname]>从车辆中选择*;空集(0.00秒)MariaDB[dbname]>从车辆中选择*;错误1146(42S02):表'dbname.Vehicles'不存在``@BenceCsókás您的问题中的错误来自H2,而不是MySQL或MariaDB。