setFetchSize和setObject可以一起为jConnect驱动程序工作吗?

时间:2017-06-12 08:24:47

标签: java jdbc sybase-iq jconnect

我正在针对sybase IQ数据库进行编程,并且在将setFetchSize与setObject结合使用时会出现奇怪的错误。

  • sybase IQ服务器版本:16.0
  • jdbc driver:jconn4 16.0
  • java 8

我们假设我们有以下代码段:

String sql = "SELECT * FROM demo.sakila.actor WHERE last_update > ? ORDER BY last_update ASC";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setObject(1, "2007-1-1 00:00:00");
pstmt.setFetchSize(100);
pstmt.executeQuery();

最终会出现错误:

java.sql.SQLException: JZ0SA: Prepared Statement: Input parameter not set, index: 0.
    at com.sybase.jdbc4.jdbc.ErrorMessage.raiseError(ErrorMessage.java:762)
    at com.sybase.jdbc4.tds.TdsParam.prepareForSend(TdsParam.java:225)
    at com.sybase.jdbc4.jdbc.ParamManager.checkParams(ParamManager.java:1193)
    at com.sybase.jdbc4.tds.TdsCursor.tdsCursor(TdsCursor.java:731)
    at com.sybase.jdbc4.tds.TdsCursor.open(TdsCursor.java:321)
    at com.sybase.jdbc4.jdbc.SybStatement.executeQuery(SybStatement.java:2365)
    at com.sybase.jdbc4.jdbc.SybPreparedStatement.executeQuery(SybPreparedStatement.java:272)

看起来它是由缺少参数引起的。如果我删除设置fetchSize的行,程序可以正常工作。

任何人都知道这是预期的行为吗?

0 个答案:

没有答案