SQL Server异常:使用JDBC时"列名xxx无效"

Kev*_*dge 13 java sql-server jdbc

我从SQL Server JDBC驱动程序中收到一个奇怪的错误.它告诉我列名无效,即使该列存在,正确命名,并且在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)
...
Run Code Online (Sandbox Code Playgroud)

Kev*_*dge 15

问题解决了.这是我的一个简单错误.

我的查询是在select语句中使用'AS'子句.我试图使用实际的列名从ResultSet中检索列值,而不是在AS子句中定义的列别名.

小学生错误.道歉浪费时间.

非常感谢Steve B.建议使用ResultSet.getColumnNames().虽然我使用的实际方法调用是ResultSet.getMetaData().getColumnName(columnIndex);