Исключение SQL Server: "недопустимое имя столбца xxx" при использовании JDBC

Я получаю странную ошибку от драйвера 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 ответов


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

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

ошибка школьника. Прошу прощения за потраченное время.

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


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


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