Исключение SQL Server: «Имя столбца xxx недопустимо» при использовании JDBC - PullRequest
11 голосов
/ 21 января 2010

Я получаю странную ошибку от драйвера JDBC для SQL Server. Это говорит мне о том, что имя столбца недопустимо, даже если столбец присутствует, имеет правильное имя и тот же запрос прекрасно работает при выполнении в SqlServer Management Studio.

Ошибка:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The column name MarginCall is not valid.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:170)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.findColumn(SQLServerResultSet.java:626)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getBigDecimal(SQLServerResultSet.java:2570)
    at org.apache.commons.dbcp.DelegatingResultSet.getBigDecimal(DelegatingResultSet.java:305)
...

Ответы [ 3 ]

14 голосов
/ 21 января 2010

Проблема решена. Это была моя простая ошибка.

В моем запросе использовалось предложение "AS" в операторе выбора. Я пытался извлечь значение столбца из ResultSet, используя фактическое имя столбца вместо псевдонима столбца, определенного в предложении AS.

Ошибка школьника. Извиняюсь за потраченное время.

Большое спасибо Стиву Б. за его предложение использовать ResultSet.getColumnNames (). Хотя фактический вызов метода, который я использовал, был ResultSet.getMetaData (). GetColumnName (columnIndex);

1 голос
/ 21 января 2010

Проверьте регистр имени вашей таблицы. если для параметров сортировки на сервере ms sql установлен регистрозависимый, то также затрагиваются имена таблиц.

0 голосов
/ 21 января 2010

Попробуйте заключить имя столбца в квадратные скобки: [MarginCall] Просто предположение.

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