Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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 如何在循环期间使用已执行的Qry resultset执行查询?_Java_Sql_Database_Oracle - Fatal编程技术网

Java 如何在循环期间使用已执行的Qry resultset执行查询?

Java 如何在循环期间使用已执行的Qry resultset执行查询?,java,sql,database,oracle,Java,Sql,Database,Oracle,如何在循环时使用上一个执行查询结果执行查询 Resultset rs = con.excuteQuery(Query1.toString); While(rs.next()){ Resultset rs1 = con.excuteQuery(Query2.toString); while(rs1.next()){ } } 一旦执行了第二个查询,则无法执行前一个rs。 例如:第一次查询有2条记录 如果执行了第二个查询,则第一个Qry没有获取第二条记录 请尽快给出解决方案 谢谢。在你的

如何在循环时使用上一个执行查询结果执行查询

Resultset rs = con.excuteQuery(Query1.toString);
While(rs.next()){
  Resultset rs1 = con.excuteQuery(Query2.toString);
  while(rs1.next()){
  }
}
一旦执行了第二个查询,则无法执行前一个rs。 例如:第一次查询有2条记录 如果执行了第二个查询,则第一个Qry没有获取第二条记录

请尽快给出解决方案


谢谢。

在你的例子中,
con
大概是一个陈述;国家:

默认情况下,每个语句对象只能打开一个ResultSet对象 同时,。因此,如果读取一个ResultSet对象 与另一个的读取交错,每个都必须已生成 通过不同的语句对象。语句中的所有执行方法 如果 开放的存在

所以你需要两个独立的陈述


编辑:我同意@A.B.Cade和其他观点,不过,你应该集中思考,让数据库进行连接,这样你就有了一个结果集。如果您当前正在使用第一个结果集中的数据进行工作,则只需跟踪您以前是否见过该数据,例如,通过跟踪一个或多个列的最后一个值。

如注释中所述,如果两个查询相关,则应使用内部联接将它们合并为一个查询。否则,您的选项取决于数据库和/或驱动程序

1) 使用两个不同的连接来执行查询

或:

2) [如果驱动程序允许]使用两个PreparedStatements,而不是直接在连接上执行查询

我建议你养成使用事先准备好的语句的习惯,除非你有很好的理由不这样做。与直接通过连接执行查询相比,它们有各种各样的好处。

下面是一篇类似的帖子。就我自己而言,我同意那些认为这个嵌套循环应该出现在查询中的人的观点