2017-11-26 2 views
-2
public String searchSinger(String singer) throws SQLException 
    { 
    PreparedStatement ps = null;; 
    ResultSet rs = null; 
    String query = "SELECT id FROM ng_singers WHERE name = ?"; 
    try{ 
     ps = connection.prepareStatement(query); 
     ps.setString(1, singer); 

     rs = ps.executeQuery(); 
     if(rs.next()) 
     { 
      String id = rs.getString(1); 
      display = display + "\t" + id;    
     } 
     System.out.println(display); 
     return display; 
     } 
     catch(Exception e){ 
     return display; 
     } 
     finally{ 
     ps.close(); 
     rs.close(); 
     } 

     } 

このように、最初のレコードに名前を入力するとこのコードは機能しますが、レコード名のDBにテーブルng_singersがあります。1 name:michael、id:2 name:janet、など。テーブルの合計9行。したがって、クエリはmichaelという名前と5,7,9行の3つの他の名前に対してのみ機能します。クエリは2,3,4,6,8行のデータを取得しません。selectステートメントは最初のレコードでのみ動作し、他のレコードから情報を取得しません。

答えて

4

質問が正しく分かるかどうかわかりません。

あなたはすべてのレコードを反復処理し、自動的にRSに次の値を代入し

while(rs.Next()){ 
} 

をしなければならないすべてのレコードを取得する場合。

あなたのコメントフィールドを取得したい場合、あなたはそれがあるので、私は質問を編集した..etc

+0

「FROM DOB、氏名、性別、レコードをSELECT」のようなあなたの「DOBを選択」にそれらを追加する必要がありますより明確。クエリは特定のレコードに対してのみ機能し、すべてのレコードに対しては機能しません。 – user2900638

+0

@ user2900638問題は変わりません。あなたは '(rs.next())'を使うべきである 'if(rs.next())'を使っています。 –

関連する問題