当前位置: 首页 > 知识库问答 >
问题:

PreparedStatement在Java中不适用于Sybase IQ

於乐语
2023-03-14
  1. 如果我们运行查询(带或不带where子句参数),它都能正常工作。
  2. 如果我们在准备好的语句中使用硬编码的参数运行查询,它也可以正常工作。
  3. 如果以html" target="_blank">编程方式设置prepared语句的参数,则不起作用。

以上测试确认JDBC连接正常工作。

使用PreparedStatement、JdbcTemplate或NamedParameterJdbcTemplate时也会出现相同的错误,因此我怀疑PreparedStatement和Sybase IQ之间可能存在问题。

有谁能帮忙调查一下吗?我们已经找到了一个解决方法,但如果知道为什么这不起作用,那将是非常有用的。

我发现了非常相似的线程(如何在sybase IQ中执行PreparedStatement(select object_id())?)关于同样的问题,但是没有人提供一个被接受的正确的答案,所以我决定为此创建一个新的问题。

使用的代码是:

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>

共有1个答案

章海
2023-03-14

我在赛贝斯的智商上也遇到了同样的问题。我在PreparedStatement.ExecureQuery()语句之前添加了以下两行代码来解决这个问题。

 preparedStatement.setFetchSize(Integer.MAX_VALUE);
 preparedStatement.setFetchDirection(ResultSet.FETCH_FORWARD);

不确定这是不是正确的做法,但它起了作用。

 类似资料:
  • 问题内容: 为了使我们的代码更加标准,我们被要求更改将SQL变量硬编码为预处理语句的所有位置,然后绑定变量。 但是我遇到了问题。 这是代码: 执行SQL时出现此错误: 我应该改为使用? 问题答案: 使用 java.sql.Date 如果表中的列类型为DATE: 该方法接收到一个字符串,该字符串代表格式的日期。例如: 假设你有一个类型的变量,则可以这样进行转换: 当前 如果要插入当前日期: 使用 j

  • 问题内容: 我试图在执行SQL插入时将标识列返回给我的Java程序。运行代码时出现以下错误 这是我正在运行的代码。 我不允许使用存储过程,所以我不能走那条路。任何帮助将不胜感激 我正在使用Java 1.5 预先感谢道格 问题答案: 我的JT400.jar文件是较旧的版本。我从sourceforge下载了最新的jar文件,问题已解决。

  • 由于catalina.sh中的默认“java.endorsed.dirs”选项,无法用Java9启动基于tomcat的应用程序。 这方面有什么工作吗?

  • 问题内容: 这是一个正常工作的web.xml: 当我删除元素并使用以下注释时: 然后,Tomcat 7.0.14给我以下错误: 我遵循了[这个问题](http://codingdict.com/questions/115618的答案,但这对我不起作用。 这是我的Web应用程序的依赖项: 编辑:我只有在使用Tomcat(7.0.14)时才有问题。玻璃鱼很好。 问题答案: 这是Tomcat7中的错误。

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。