Оператор iSeries JDBC Sql с «é» в имени столбца выбрасывает java.sql.SQLException: [SQL0104] - PullRequest
0 голосов
/ 10 сентября 2010

У меня проблемы с использованием символа "é" в имени возвращаемого столбца из SQL-запроса. Выполнение этого запроса

SELECT PRCAT as Categorie, PRYEA as Année, PRDSC as Designation from DEMO.PRODUCT

при использовании драйвера JDBC IBM Toolbox, подключающегося к iSeries, выдается следующее исключение:

 java.sql.SQLException: [SQL0104] Token é was not valid. Valid tokens: , FROM INTO. Cause . . . . . :   A syntax error was detected at token é.  Token é is not a valid token.  A partial list of valid tokens is , FROM INTO.  This list assumes that the statement is correct up to the token.  The error may be earlier in the statement, but the syntax of the statement appears to be valid up to this point. Recovery  . . . :   Do one or more of the following and try the request again: -- Verify the SQL statement in the area of the token é. Correct the statement.  The error could be a missing comma or quotation mark, it could be a misspelled word, or it could be related to the order of clauses. -- If the error token is <END-OF-STATEMENT>, correct the SQL statement because it does not end with a valid clause.
    at com.ibm.as400.access.JDError.throwSQLException(JDError.java:650)
    at com.ibm.as400.access.JDError.throwSQLException(JDError.java:621)
    at com.ibm.as400.access.AS400JDBCStatement.commonPrepare(AS400JDBCStatement.java:1481)
    at com.ibm.as400.access.AS400JDBCPreparedStatement.<init>(AS400JDBCPreparedStatement.java:185)
    at com.ibm.as400.access.AS400JDBCConnection.prepareStatement(AS400JDBCConnection.java:1903)
    at com.ibm.as400.access.AS400JDBCConnection.prepareStatement(AS400JDBCConnection.java:1726)
...

Это проблема неправильной настройки драйвера jdbc или есть какие-то встроенные ограничения на то, какие символы можно использовать (и где я могу найти это? Я считаю, что IBM doco невозможно лабиринт ...) Мой код подключения jdbc выглядит так:

Class.forName("com.ibm.as400.access.AS400JDBCDriver").newInstance();
Connection cnnobj=DriverManager.getConnection("jdbc:as400://"+ipAddress+";errors=full;date format=iso;time format=iso;", user, pass);

1 Ответ

1 голос
/ 11 сентября 2010

Что произойдет, если вы укажете псевдоним?

SELECT PRCAT as Categorie, PRYEA as "Année", PRDSC as Designation from DEMO.PRODUCT
...