Как выполнить PreparedStatement(select object_id()) в sybase iq?

У нас есть небольшое приложение jdbc, которое взаимодействует с базой данных sybase iq, которая делает:

String objectName = "SYS.SYSWEBSERVICE"; 
//The actual value of objectName does not matter.
//It could be any view object in the sys schema

PreparedStatement preparedStatement =
    connection.prepareStatement("SELECT OBJECT_ID(?)");
preparedStatement.setString(1, objectName);
preparedStatement.executeQuery();

Мы получаем эту ошибку:

java.sql.SQLException: JZ0SA: Prepared Statement: Input parameter not set, index: 0.s

Я просмотрел http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc39001.0700/html/prjdbc0700/CHDGJJIG.htm

JZ0SA: Prepared Statement: Input parameter not set, index: _____.
Action: Be sure that each input parameter has a value.

Когда я меняю код

setString(0, objectName)

Я получаю:

java.lang.ArrayIndexOutOfBoundsException: -1
    at com.sybase.jdbc4.jdbc.SybPreparedStatement.a(Unknown Source)
    at com.sybase.jdbc4.jdbc.SybPreparedStatement.a(Unknown Source)
    at com.sybase.jdbc4.jdbc.SybPreparedStatement.a(Unknown Source)
    at com.sybase.jdbc4.jdbc.SybPreparedStatement.setString(Unknown Source)

Мы используем jconn-4.0.jar:

Manifest-Version: 1.0
Created-By: 1.6.0_03 (Sun Microsystems Inc.)
Main-Class: SybVersion

Name: com/sybase/jdbcx/
Implementation-Vendor: "Sybase, Inc."
Specification-Title: "jConnect for JDBC 4.0"
Implementation-Title: "com.sybase.jdbcx"
Implementation-Version: "Build (26502)"
Specification-Version: "7.0"
Specification-Vendor: "Sybase, Inc."

Может кто-нибудь сказать мне, что я делаю неправильно? Спасибо.


person user674669    schedule 03.06.2015    source источник
comment
Мой ответ был основан на индексе сообщений об ошибках: 0 как проблема, поскольку API, на который вы ссылаетесь, предполагает, что в противном случае вы также можете включить значение objectName, поскольку оно может иметь значение.   -  person    schedule 04.06.2015
comment
Спасибо @Phaeze. Я обновил свой вопрос.   -  person user674669    schedule 04.06.2015
comment
Большинство сообщений, которые появляются в Google относительно этой конкретной ошибки, указывают на разницу в версиях с JConnect между приложением и сервером sybase. Взгляните на: tech.forums.softwareag.com/techjforum/posts /list/47520.страница   -  person    schedule 04.06.2015
comment
Похоже на ошибку в драйвере.   -  person Mark Rotteveel    schedule 04.06.2015


Ответы (1)


Несмотря на то, что может быть сказано в документе API, я думаю, что индекс параметра должен начинаться с нуля, возможно, это ошибка в используемом вами драйвере JDBC. Попробуйте с нулевым индексом. установитьСтроку(0,....);

person Mirko Klemm    schedule 03.06.2015
comment
Я получаю java.lang.ArrayIndexOutOfBoundsException: -1 при выполнении setString(0,..) - person user674669; 04.06.2015