Java PreparedStatement сохранить имя таблицы - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть этот Java фрагмент, работающий на сервере WildFly, поддерживаемом MariaDB:

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 голос
/ 13 апреля 2020

Это невозможно, SQL диалекты, как правило, по умолчанию не чувствительны к регистру, но хранят имя таблицы в верхнем регистре (некоторые диалекты хранятся в нижнем регистре). Это означает, что если вы используете select * from vehicle, вы фактически выбираете из таблицы с именем VEHICLE, и сообщения об ошибках будут отражать это имя, поскольку таблица vehicle отличается от таблицы VEHICLE. * 1005. *

Если вы хотите, чтобы исходный регистр отображался в сообщении об ошибке, вам нужно выбрать из таблицы, которая действительно называется vehicle. Для этого вам нужно будет указывать имя объекта во всех ваших операторах SQL, например, select * from "vehicle" или - в MariaDB и MySQL - select * from `vehicle`. Имена объектов в кавычках сохраняют свой первоначальный регистр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...