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
到达返回行的末尾,任何进一步尝试从中获取都将导致您看到的错误。
所使用的数据库,可以使结果集可倒带,但必须显式地将光标移回每个外部循环迭代顶部的第一行。