DBUtils и ResultSetMetaData не воспринимает AS в запросе JDBC

244
22 апреля 2017, 22:54

Использую DBUtils.

Есть запрос на получение данных. Использую LEFT JOIN. В этом запросе есть, так сказать, называние колонки - u.id AS id, test.id AS tid и так далее. Полученные данные я разбираю при помощи ResultSetMetaData:

while(rs.next()) {
                    JSONObject tmp= new JSONObject();
                    ResultSetMetaData meta = rs.getMetaData();
                    for(int i=0;i<meta.getColumnCount();i++) {
                        tmp.put(meta.getColumnName(i+1), rs.getObject(i+1));
                    }
                    data.put(rs.getInt("id"), site);
                }

И проблема в том что если я использую AS - meta.getColumnName(i+1)возвращает не название колонки которую я присваиваю а его исходное, тобишь если u.id то так и будет u.id, а в самом ResultSet такой колонки нет, ибо она названа так как я её назвал.

Как быть?

РЕШЕНИЕ: в ResultSetMetaData есть два типа колонок - оригинальные и те которые присвоенные (если нет присвоения то они одинаковые). Что бы получить не оригинальное имя нужно использовать getColumnLabel()

READ ALSO
Запуск тестов из командной строки

Запуск тестов из командной строки

Как запустить локально unit test'ы в командной строке?

331
Как остановить процесс игры?

Как остановить процесс игры?

В игре несколько цветных шариков появляются каждую секунду и исчезаютИгрок должен выбрать правильную последовательность

319
Создание ехе файла с java проекта

Создание ехе файла с java проекта

Есть готовый десктопный проект на Java, с GUI интерфейсомПроект был разработан в среде Intellij Idea

221
Анимация поворота картинки

Анимация поворота картинки

Добрый день, в программировании на Android еще новичок

273