Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ResultSet.getNext()无法使用PreparedStatement_Java_Oracle_Jdbc_Plsql - Fatal编程技术网

Java ResultSet.getNext()无法使用PreparedStatement

Java ResultSet.getNext()无法使用PreparedStatement,java,oracle,jdbc,plsql,Java,Oracle,Jdbc,Plsql,我正在试图弄清楚为什么在我执行SQL查询并将结果从Oracle 11g表返回到ResultSet中之后,我正在编写的Java代码中ResultSet.next()永远都不是真的。。。在java.sql.Connection中使用PreparedStatement时,代码似乎没有正确地提取返回的ResultSet的内容。感谢您的帮助,以下是详细信息: 表: CREATE TABLE "SHANDB"."ABSCLOBS" ( "ID" NUMBER, "XMLVAL"

我正在试图弄清楚为什么在我执行SQL查询并将结果从Oracle 11g表返回到ResultSet中之后,我正在编写的Java代码中ResultSet.next()永远都不是真的。。。在java.sql.Connection中使用PreparedStatement时,代码似乎没有正确地提取返回的ResultSet的内容。感谢您的帮助,以下是详细信息:

表:

  CREATE TABLE "SHANDB"."ABSCLOBS" 
   (    "ID" NUMBER, 
    "XMLVAL" "XMLTYPE", 
    "IDSTRING" VARCHAR2(20 BYTE)
   )
数据:

上述代码的这一部分从未运行过,我不理解:

  while(rowsUpdated.next()){
      String clobxml = rowsUpdated.getString(1);
      System.out.println(clobxml);
  }
。。。但是,最终打印语句显示结果集不是空的:

Rows affected: oracle.jdbc.driver.OracleResultSetImpl@15f157b
有人知道为什么我不能显示实际检索到的XML clob内容,和/或为什么上面的while块从来都不是真的吗


谢谢:)

您的诊断不正确-这是:

Rows affected: oracle.jdbc.driver.OracleResultSetImpl@15f157b
不显示结果集为非空。它只是显示了
rowsUpdated
的值是对
oracle.jdbc.driver.OracleResultSetImpl
实例的引用,该实例不重写
toString()
。那很容易是空的

我怀疑问题在于您的
WHERE
子句与任何记录都不匹配。为了便于诊断,我建议您将其更改为:

String selectID1 = "SELECT a.xmlval.getClobval() AS poXML FROM absclobs a";
(当然,还要去掉参数设置调用)。这样,您应该能够看到表中的所有值。然后,您可以着手发现
WHERE
子句未按预期工作的原因


(顺便说一句,不清楚您为什么没有在问题代码中声明
连接
行支持
。它们肯定是局部变量…

您的诊断不正确-这是:

Rows affected: oracle.jdbc.driver.OracleResultSetImpl@15f157b
不显示结果集为非空。它只是显示了
rowsUpdated
的值是对
oracle.jdbc.driver.OracleResultSetImpl
实例的引用,该实例不重写
toString()
。那很容易是空的

我怀疑问题在于您的
WHERE
子句与任何记录都不匹配。为了便于诊断,我建议您将其更改为:

String selectID1 = "SELECT a.xmlval.getClobval() AS poXML FROM absclobs a";
(当然,还要去掉参数设置调用)。这样,您应该能够看到表中的所有值。然后,您可以着手发现
WHERE
子句未按预期工作的原因



(顺便说一句,不清楚您为什么没有在问题中的代码中声明
connection
rowsUpdated
。它们肯定应该是局部变量…

该行如何告诉您结果集不是空的?即使空结果集是驻留在内存地址的对象,它也没有任何行。它与
null
不同。us2012是正确的。那么您是尝试了另一个查询还是直接测试了您的查询?它有行吗?这个问题太复杂了。。。也许您应该首先删除所有不相关的细节(条件等),并检查是否按预期工作。这将帮助我们大家更快地解决问题。对不起。。。我的意思是该语句返回一个值,但上面运行的代码没有返回,这我不理解:从absclobs a中选择a.xmlval.getClobval()作为poXML,其中idstring='1',id=1@模糊分析:那你为什么要介绍关于“最终打印声明”的内容呢?你试过没有WHERE条款吗?为什么INSERT语句不包含IDSTRING值?该行如何告诉您结果集不是空的?即使空结果集是驻留在内存地址的对象,它也没有任何行。它与
null
不同。us2012是正确的。那么您是尝试了另一个查询还是直接测试了您的查询?它有行吗?这个问题太复杂了。。。也许您应该首先删除所有不相关的细节(条件等),并检查是否按预期工作。这将帮助我们大家更快地解决问题。对不起。。。我的意思是该语句返回一个值,但上面运行的代码没有返回,这我不理解:从absclobs a中选择a.xmlval.getClobval()作为poXML,其中idstring='1',id=1@模糊分析:那你为什么要介绍关于“最终打印声明”的内容呢?你试过没有WHERE条款吗?为什么INSERT语句不包含IDSTRING值呢?见鬼,只需对数据库运行您自己想要的调用,
从absclobs a中选择a.xmlval.getClobval()作为poXML,其中IDSTRING='1'和id=1
,然后查看是否有任何返回。另外,如果您只是引用通过列索引返回的列(在本例中为1),则不需要查询的
AS poXML
部分。我之前把问题搞砸了,因为我没有把IDSTRING值放入INSERT语句中,现在我已经修复了INSERT语句。问题仍然存在,SQL正确运行以返回一行,但ResultSet.next()永远都不是真的。这最终是一个奇怪的解决方案。。。每当我删除对我在Eclipse“表达式”选项卡中检查的结果集的任何引用时,上面的操作都很好。在选项卡中添加一个涉及结果集的表达式,所有内容都将被覆盖。真的很奇怪。@fuzzyananalysis:Hmm。如果
toString()
耗尽了
ResultSet
的话,这可能是有道理的,但不是别的。古怪的哦,好吧-至少它现在已经修复了…见鬼,只需对您的数据库运行您自己想要的调用,
从absclobs a中选择a.xmlval.getClobval()作为poXML,其中idstring='1'和id=1
,然后查看是否有任何结果。另外,如果您只是引用通过列索引返回的列(在本例中为1),则不需要查询的
AS poXML
部分。我之前把这个问题搞砸了,没有把IDSTRING值输入到