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

时间:2016-06-13 06:31:06

标签: java sql jdbc resultset

<a href="http://ejje.weblio.jp/content/Windows">Windows</a>

大家好, 我试图匹配coloumn的每个单词与其他coloumn条目,但首先我试图使用嵌套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();
}

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

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

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

2 个答案:

答案 0 :(得分:0)

你试图多次迭代r4,这是不支持的:注意你永远不会说'#34;回到开始&#34;。

首先将其条目复制到列表中,在外部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);

答案 1 :(得分:0)

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

根据您使用的数据库,可以使结果集可以重新循环,但是您必须将光标显式移回到每个外部循环迭代顶部的第一行。