Столкнулся с проблемой:
PreparedStatement stmt = MAIN_DB_CONNECTION.prepareStatement("select count(*) as knt from ?");
List<String> tables = new LinkedList<String>(Arrays.asList("vi_site vi_ne vi_rack vi_shelf vi_slot vi_card vi_port vi_channel vi_circuit".split(" ")));
for (String name : tables){
stmt.setString(1, name);
ResultSet res = stmt.executeQuery();
res.next();
values.add(res.getInt("knt"));
}
вылетает с java.sql.SQLException: ORA-00903: invalid table name
Если захардкодить Statement`ы, всё работает. Проблема ясно в чём: в PreparedStatement вставляется название таблицы, включая кавычки. Но вот что теперь с этим делать?
Примечание:
@alexip73 прошу прощения, я не вдавался в подробности раздачи баллов. В следующий раз не буду таким жадным)
По теме: регистр не помогает, пробовал. Кроме того, хардкод с произвольным регистром проходит.
@Masquerade вместо "?" подставляется имя из списка tables.
@Артёмка тоесть, это не решается? Этого я и боялся.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.