2017-02-03 2 views
0

なぜelse {}が機能しないのですか?出力はありません。私の{}は完璧にうまくいっています。ヘルプは高く評価しました!結果がないときにResultSetがnullにならないのはなぜですか?

String s2 = "SELECT CCA FROM generatedchoices WHERE category='" + category + "' AND intensiveness='"+ intensiveness + "'"; 
     rs2 = st.executeQuery(s2); 

     if(rs2!=null){ 
      while (rs2.next()) { 
       ccalist.add(rs2.getString("CCA")); 
      } 
     } 
     else{ 
      System.out.println("No combination!"); 
      //JOptionPane.showMessageDialog(null, "No combination found!"); 
     } 
+2

'else'ブロックは' if'ブロックが「完全に正常に動作している」場合、なぜ入力されますか? –

+0

フェッチされたレコードがない場合、rs2はnullになりません。 'rs2.next()'は偽になります – GurV

+0

あなたの 'if'ブロックがうまくいけば' else'ブロックがうまくいくのでしょうか? – Chip

答えて

0

を参照してください。

戻り値:指定されたクエリによって作成されたデータを含むResultSetオブジェクトを、 クエリはあなたがnullを取得することはありません行が戻されない場合は

ヌル決して。空のResultSetが表示されます。むしろnullをチェックするよりも、in this answerを与えられたとして、これをチェックする簡単なトリックがisBeforeFirst()を使用することです:

if (resultSet.isBeforeFirst()) {  
    // loop over results 
} else { 
    // no results returned 
} 

は、あなたがその解決策と快適に感じていない場合、または何らかの理由でそれはあなたのために問題が発生した場合、別の簡単な方法は、例えば、あなたが結果を処理したかどう単にチェックすることです:

rs2 = st.executeQuery(s2); 

boolean hadResults = false; 

while (rs2.next()) { 
    ccalist.add(rs2.getString("CCA")); 
    hadResults = true; 
} 

if (!hadResults) { 
    System.out.println("No combination!"); 
    //JOptionPane.showMessageDialog(null, "No combination found!"); 
} 

それとも、その特定の猫の皮膚に思い付くことができ、他のさまざまな方法。

+0

'ccalist'の' length'のようにテストします –

+0

@ScaryWombatこのコードスニペットの前に 'ccalist'の内容について何も仮定しないでください。 [情報の欠如]を指定すると、ループの前後のサイズを比較したいと思うでしょう。また、これは、 'ccalist'が実際に何らかの並べ替えのリストであり、' add'は、例えば、いくつかのタイプのセット。しかし、 'ccalist'についてもっと知っていれば、オプションを少し絞り込むことができます。 –

関連する問題