Я и моя команда столкнулись с проблемой.Мы пытаемся извлечь некоторые данные из базы данных Sybase IQ и используем условие where
для фильтрации и получения определенных данных.
SQL протестирован и работает нормально, но не работает при использовании Prepared Statement.
Выполнено тестов :
- Если мы запустим запрос (с параметрами предложения where или без), он будет работать нормально.
- Если мы запустим запросс параметрами, жестко закодированными в подготовленном операторе, он также работает нормально.
- Если мы устанавливаем параметры подготовленного оператора программно, он не работает.
Вышеуказанные тесты подтверждают JDBCсоединение работает нормально.
Та же ошибка появляется при использовании PreparedStatement, JdbcTemplate или NamedParameterJdbcTemplate, поэтому я подозреваю, что между PreparedStatement и Sybase IQ может быть проблема.
Может ли кто-нибудь помочь расследовать это?Мы нашли обходной путь для этого, но было бы очень полезно узнать, почему это не работает.
Я нашел очень похожую ветку ( Как мне выполнить PreparedStatement (select object_id ()) в sybase iq? ) по той же проблеме, но никто не дал там принятого и правильного ответа, поэтомуЯ решил создать для этого новый вопрос.
Используемый код:
Class.forName("com.sybase.jdbc4.jdbc.SybDriver");
PreparedStatement stmt = con.prepareStatement("select * from myView where off = ? and acc = ?");
stmt.setString(1, "260");
stmt.setString(2, "9050V");
ResultSet set = stmt.executeQuery();
Сообщение об ошибке:
Exception in thread "main" java.sql.SQLException: JZ0SA: Prepared Statement: Input parameter not set, index: 0.
at com.sybase.jdbc4.jdbc.SybConnection.getAllExceptions(Unknown Source)
at com.sybase.jdbc4.jdbc.SybStatement.handleSQLE(Unknown Source)
at com.sybase.jdbc4.jdbc.SybStatement.sendQuery(Unknown Source)
at com.sybase.jdbc4.jdbc.SybPreparedStatement.sendQuery(Unknown Source)
at com.sybase.jdbc4.jdbc.SybStatement.executeQuery(Unknown Source)
at com.sybase.jdbc4.jdbc.SybPreparedStatement.executeQuery(Unknown Source)
Используемый драйвер JDBC (зависимость Maven):
<dependency>
<groupId>com.sybase</groupId>
<artifactId>jconn4</artifactId>
<version>7.0</version>
</dependency>