2012-02-20 7 views
0

をチェック...ここにコード私は空の結果を確認するの溶液を創設しています空の結果

 temp = rs1; 
    boolean hasRows = temp.next(); 


    if (hasRows) { 
     while (rs1.next()) { 
      String pid = rs1.getString("pid"); 
      System.out.println(pid); 
      String pd = rs1.getString("description"); 
      double price = rs1.getDouble("price");%> 
        <br> 
        Product id : <%=pid %><br> 
        Description : <%=pd %><br> 
        Price : <%=price %> 
     <% 
       } 
      } 

があり、(temp.next()がrs.next影響すると思われる)、その結果を印刷することができません最後に。どうして?

+0

好きです。これは、オブジェクト指向です。 'temp'は' rs'と同じ 'ResultSet'インスタンスを参照しています... – home

+0

@homeこれはオブジェクト指向とは関係ありません。単に' temp'と 'rs1'が同じオブジェクトを参照しているだけです。 OPには、while(rs1.hasNext()){...} 'を使います。 – kba

+0

@Kristian Antonsen:OOに必ずしも関連しているわけではありませんが、あなたが言及したように、それはオブジェクトを指しています。私はポインターや参照をOOの共通の原則と呼んでいます。 – home

答えて

1

next()メソッドは、既に試したコントロールをチェックします。結果セットrs1に要素がある場合、ループが入力されます。 どこでもtempを使用していないようです。どうして?それを放棄し、あなたの仕事を得る、これを試してみてください。

 boolean loopEntered = false; 
     while (rs1.next()) 
     { 
       loopEntered = true; 
       String pid = rs1.getString("pid"); 
       System.out.println(pid); 
       String pd = rs1.getString("description"); 
       double price = rs1.getDouble("price"); 

       %> 
       <br> 
       Product id : <%=pid %><br> 
       Description : <%=pd %><br> 
       Price : <%=price %> 
       <% 
     } 

     if(!loopEntered) 
     // print your error messages. 
+0

しかし、結果セットが空であれば "製品が見つかりません"という印刷方法は? – hkguile

+0

'ResultSets'には' hasNext() 'メソッドはありません。代わりに、whileループの内側にフラグを設定することができます。あるいは 'if(rs1.next())'を保持し、 'while'ループを' do ... while'に変更します。 – TPete

+0

@TPeteループの直後に空をチェックするだけで動作します。私はコードを変更しました。 – Juvanis

1

を、私は通常、この

if(rs.next()){ 
    do {     
     //print product details 
    } while (rs.next()); 
}else{ 
    //print product not found 
} 
関連する問題