Java PreparedStatement保留表名大小写

问题描述 投票:-1回答:1

我有这个Java代码段,在WildFly服务器中运行:

var stmt = conn.prepareStatement("SELECT * FROM vehicles;");
ResultSet rs = stmt.executeQuery();

这给了我以下例外:

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

因此,显然,它决定将表名大写,这是我不需要的。如何关闭它?

java jdbc mariadb prepared-statement wildfly
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.