2010-01-21 16 views
8

Dostaję dziwny błąd ze sterownika JDBC programu SQL Server. Mówi mi, że nazwa kolumny jest nieprawidłowa, mimo że kolumna jest obecna, poprawnie nazwana i ta sama kwerenda działa poprawnie po uruchomieniu w SqlServer Management Studio.Wyjątek serwera SQL: "Nazwa kolumny xxx jest niepoprawna" podczas korzystania z JDBC

Błąd jest:

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

Czy możesz podać kod naruszający prawa? Czy nazwa jest zgodna z wartościami uzyskanymi w ResultSet.getColumnNames? –

Odpowiedz

11

Problem rozwiązany. To był prosty błąd przeze mnie.

Moje zapytanie używało klauzuli "AS" w instrukcji select. Próbowałem pobrać wartość kolumny z ResultSet przy użyciu rzeczywistej nazwy kolumny, zamiast aliasu kolumny zdefiniowanego w klauzuli AS.

Błąd ucznia. Przepraszam za marnowanie czasu.

Podziękowania dla Steve B. za sugestię użycia funkcji ResultSet.getColumnNames(). Chociaż rzeczywiste wywołanie metody, którego użyłem, było ResultSet.getMetaData(). GetColumnName (columnIndex);

0

Spróbuj dołączyć nazwę kolumny w nawiasach kwadratowych: [Chciwość] tylko domyślać.

+0

Obawiam się, że to nie był problem, ale bardzo dziękuję za sugestię. –

1

Sprawdź wielkość liter w nazwie tabeli. jeśli sortowanie jest ustawione na wielkość liter na serwerze ms sql, dotyczy to również nazw tabel.

Powiązane problemy