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

如何在sybase IQ中执行PreparedStatement(select object_id())?

邓鸿彩
2023-03-14

我们有一个与sybase iq数据库对话的小型jdbc应用程序,它会:

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."

有人能告诉我我做错了什么吗?谢谢你。

共有1个答案

盛超
2023-03-14

尽管API文档可能会说什么,但我认为参数索引必须是从零开始的,也许这是您正在使用的JDBC驱动程序中的一个bug。尝试使用从零开始的索引。setString(0,....);

 类似资料:
  • 问题内容: 我正在尝试使用Java中的PreparedStatement执行查询。 尝试执行查询时出现错误号1064(语法错误)。 我已经在MySQL查询浏览器中使用替代值测试了此方法,效果很好。 我的代码有什么问题? 以下是相关代码: 这是我得到的例外: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法有错误;检查与您

  • 问题内容: 我正在使用Eclipse Java EE进行Web应用程序项目。当前,我的应用程序返回数据库中存储员工个人信息的所有值。但是,我设置了默认的准备语句以搜索表employee_id = 1234,而不是登录员工的employee_id。这意味着无论哪个员工登录到我的系统,它都只会显示该员工的个人信息。 ID为1234,如下面的准备语句所示: 请注意上面的employeeID如何设置为12

  • 问题内容: 该声明是 并通过java.sql.PreparedStatement’stmt’插入参数 如果为null,则在每种情况下该语句均不返回任何行,因为它始终为false(应为)。一种解决方案是 但是然后我必须两次设置相同的参数。有更好的解决方案吗? 谢谢! 问题答案: 我一直按照您在问题中所表现的方式来做。两次设置相同的参数不是很大的困难,不是吗?

  • 问题内容: 我知道的版本的具有功能合并多个文件到一个新的。 但是该版本的API不再支持该功能。 关于如何将目录中的所有文件合并到hadoop版本的新单个文件中的任何想法? 问题答案: FileUtil#copyMerge方法已被删除。查看主要更改的详细信息: https://issues.apache.org/jira/browse/HADOOP-12967 https://issues.apac

  • 问题内容: 我似乎无法找出如何在Swift 2中进行操作。 我试着做 那不行 helloworld是一个变量 问题答案: 是。在swift 2.0中进行了更改,您需要访问Apple网站。放而不是

  • 问题内容: 以下是我用来设置状态的代码。 即使成功创建了数据库,也无法调用,因为它始终是未定义的。 我试过了: 但是它仍然失败,尝试使用和使用,仍然没有运气。 我该如何解决? 问题答案: 您需要将正确的(类上下文)与回调方法绑定在一起,然后只有您才能访问类的属性和方法。 可能的解决方案: 1- 使用 箭头功能 ,如下所示: 2- 或与一起使用,如下所示: 您使用的方式也将起作用,保存方法内部的引用