Используйте getColumnName () или getColumnLabel () для getString ()? - PullRequest
1 голос
/ 07 мая 2019

У меня возникла проблема с драйвером SAS jdbc, которого я раньше не видел, и подумал, что будет правильным поведением JDBC.

Предположим, у меня есть ResultSetMetaData:

metadata.getColumnName(index) -> col1
metadata.getColumnLabel(index) -> Column1

Это будет результат SQL при выполнении этого запроса:

SELECT col1 AS Column1

При получении значения от ResultSet я ожидаю использовать это:

rs.getString("Column1") 

Но вместо этого я, кажется, должен использовать:

rs.getString("col1")

Этого следует ожидать и где мои предположения неверны? Или это поведение конкретного драйвера?

Ответы [ 2 ]

1 голос
/ 07 мая 2019

В JDBC вы получаете значения результирующего набора по метке столбца (псевдоним), а не по имени столбца.В коде в вашем вопросе, правильный способ получения значения использует rs.getString("Column1") (или - как это обрабатывается без учета регистра - rs.getString("COLUMN1"))

Это задокументировано в API, так как все *Получатели на основе 1005 * имеют следующую документацию:

Параметры:

columnLabel - метка для столбца, указанного в предложении SQL AS.Если предложение SQL AS не было задано, то метка - это имя столбца

Исторически JDBC 3 и более ранних версий четко не различали метки столбцов и имена столбцов, которые - к этомудень - приводит к драйверам, которые требуют, чтобы вы получали по имени столбца, или позволяли получить как по имени столбца, так и по метке, или возвращали имя столбца из ResultSetMetaData.getColumnLabel(int) или метку столбца из ResultSetMetaData.getColumnName(int), или есть параметры конфигурации, чтобы установить, какое поведение использовать.

1 голос
/ 07 мая 2019

Поскольку вы используете псевдоним, кажется, что jdbc ожидает псевдоним в этом аргументе имени столбца.

Я нашел связанную ссылку для этого: Псевдоним БД Resultset .Надеюсь, что это может быть полезно

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