2009-11-20 2 views
0

я получаю эту ошибку com.ibm.db2.jcc.b.SqlException: Недопустимый аргумент: неизвестный столбецимя COL1 при попытке получить доступ к моему результирующему набору с помощью rs.getString («COL1»).
Мой SQL-запрос: Выберите UPPER (COL1) из таблицы1. тот же запрос и код Java отлично работают с DB2 v8 (драйвер Type 2), но при использовании с DB2 v9 (драйвер типа 4) он выбрасывает вышеуказанное исключение.com.ibm.db2.jcc.b.SqlException: Недопустимый аргумент: неизвестное имя столбца COL1

Однако я могу устранить эту ошибку, добавив псевдоним, измененный запрос: Выбрать UPPER (COL1) COL1 из table1.

приведенный выше запрос работает как с DB2 v8, так и с v9. это означает, что в DB2 9 мы должны предоставить псевдоним при использовании с такими функциями, как (верхний, триммер, ..) ???

благодаря

ответ

1

Ничто в DB2 или SQL требует имена столбцов функций быть конкретные значения.

Возможно, ранние драйверы (или даже драйверы t2, которые я обычно никогда не использовал, предпочитая сам t4), дали вам имя столбца, которое вы ожидали, но мне интересно, что он дал бы вам за col1 | '.' | col2.

Ваш запрос действительно должен быть то, что вы должны получить его работу:

select upper(col1) as col1 from table1 

Это гарантирует имя столбца col1.

Если вы действительно хотите знать, что имена столбцов для вашего запроса, вы можете получить мета-данные для результирующего набора со следующими вызовами (только примеры):

ResultSet rs = <get your result set here>; 
ResultSetMeatData meta = rs.getMetaData(); 
for (int i = 1; i < meta.getColumnCount(); i++) { 
    System.out.println (getColumnName (i)); 
} 

Но вы должны использовать as, чтобы гарантировать, что имена будут такими, как ожидалось.

 Смежные вопросы

  • Нет связанных вопросов^_^