2010-01-21 99 views
8

Recibo un error extraño del controlador JDBC de SQL Server. Me está diciendo que el nombre de una columna no es válido a pesar de que la columna está presente, tiene un nombre correcto y la misma consulta funciona bien cuando se ejecuta en SqlServer Management Studio.Excepción de SQL Server: "El nombre de columna xxx no es válido" cuando se usa JDBC

El error es:

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

¿Se puede incluir el código ofensivo? ¿El nombre coincide con los valores que obtienes en ResultSet.getColumnNames? –

Respuesta

11

Problema resuelto. Fue un error simple por mi parte.

Mi consulta estaba usando una cláusula 'AS' en la instrucción select. Intenté recuperar el valor de la columna del ResultSet utilizando el nombre de columna real, en lugar del alias de columna definido en la cláusula AS.

Error de colegial. Disculpas por el tiempo perdiendo.

Muchas gracias a Steve B. por su sugerencia de utilizar ResultSet.getColumnNames(). Aunque la llamada al método real que utilicé fue ResultSet.getMetaData(). GetColumnName (columnIndex);

0

Trate de encerrar el nombre de la columna entre corchetes: [] Margin Call Sólo una conjetura.

+0

Me temo que ese no fue el problema, pero muchas gracias por la sugerencia. –

1

Marca el nombre de la tabla. si la intercalación está configurada como sensible a las mayúsculas y minúsculas en el servidor ms sql, los nombres de la tabla también se verán afectados.

Cuestiones relacionadas