在 Java 中使用嵌套 for 循环遍历结果集


for(int j=0; j<artifactCount; j++)
{
        String first = r2.getString("context");                                         
        for(int k=0; k<relevantCount; k++)
        {
            String second = r4.getString("context");
            System.out.println(first + "        " + second);
            r4.next();
        }                   
        r2.next();
}

大家好,我正在尝试将列的每个单词与其他列条目匹配,但首先我尝试使用嵌套的 for 循环遍历结果。在第一次迭代中,结果是正确的,因为旁边会有单个单词和一组单独的单词。下面给出的是第一次迭代的示例输出,这是正确的。

Technology      Products
Technology      Methodology
Technology      Project management
Technology      Risk
Technology      Management
Technology      Processes
Technology      Capitalism
Technology      Supply chain
Technology      Skill
Technology      Production and manufacturing

但是在第二次迭代中,它给出了以下错误,因为它没有遍历具有所有可能值的第二个即将到来的值。

java.sql.SQLException: After end of result set
at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:4353)
at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:2137)
at com.mysql.jdbc.ResultSet.getString(ResultSet.java:2132)
at com.mysql.jdbc.ResultSet.getString(ResultSet.java:2250)
at WebArtifactListener$2.run(WebArtifactListener.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

您的帮助将不胜感激...thanx

您正在尝试多次迭代r4,这是不支持的:请注意,您永远不会说"回到起点"。

首先将其条目复制到外部 for 循环之外的列表,然后迭代该列表而不是 r4

List<String> r4contents = new ArrayList<>();
for(int k=0; k<relevantCount; k++) {
  r4contents.add(r4.getString("context"));
  r4.next();
}
// Then, in the inner loop...
String second = r4contents.get(k);

您没有显示初始化结果集的代码,但您似乎期望r4以某种方式重置到开头,只是因为外部循环迭代。 事实并非如此,一旦r4到达返回行的末尾,任何进一步尝试从中获取都将导致您看到的错误。

根据

所使用的数据库,可以使结果集可倒带,但必须显式地将光标移回每个外部循环迭代顶部的第一行。

最新更新