2016-06-13 5 views
0
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(); 
} 

こんにちはすべて、 Javaでforループをネストされた使用して結果セットを横断。 1回目の反復では、結果が正しいようになります。単一の単語とそれに並んだ別々の単語のグループが存在するためです。以下は、正しい第1の反復のサンプル出力である。私は他のcoloumnエントリでcoloumnの各単語に一致するようにしようとしていますが、最初に私はループのネストされた使用して結果を横断しようとしている

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

しかし、2回目の反復では、可能なすべての値で2次の値をトラバースしないため、次のエラーが発生します。

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) 

あなたの助けが...ありがとう

答えて

0

をいただければ幸いあなたはサポートされていない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); 
0

あなたは結果セットを初期化するコードを示していないが、あなたはr4は何とかちょうど外側のループ反復するので、先頭にリセットされることを期待しているようです。これは当てはまりません。r4が返された行の最後に到達すると、その行からフェッチを試みると、表示されるエラーが発生します。

使用しているデータベースに応じて結果セットを巻き戻し可能にすることはできますが、カーソルを外側ループの各繰り返しの先頭にある最初の行に明示的に戻す必要があります。

関連する問題