有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jdbc Java PreparedStatement保留表名大小写

我有一个Java代码段,运行在由MariaDB支持的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]

所以,很明显,它决定将表名大写,这是我不想要的。我怎样才能关掉它


共 (1) 个答案

  1. # 1 楼答案

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

    如果希望在错误消息中反映原始大小写,则需要从名为vehicle的表中进行选择。要做到这一点,您需要在所有SQL语句中引用对象名,例如select * from "vehicle",或者在MariaDB和MySQL中select * from `vehicle`。引用的对象名称保留其原始大小写