2017-11-26 7 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(); 
     } 

     } 

이렇게 첫 번째 레코드에 이름을 입력했지만 모든 레코드에서 작동하지 않을 경우이 코드가 작동합니다. 레코드 ID를 가진 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()){ 
} 

을해야한다. 당신이 당신의 주석 필드를 검색 할 경우

, 당신은에 추가 할 필요가 당신은 그래서 나는 질문을 편집 한 .. 등

+0

"FROM 생년월일, 이름, 성별, 레코드를 선택하십시오"와 같은 "DOB 선택" 더 분명한. 쿼리는 모든 레코드가 아닌 특정 레코드에서만 작동합니다. – user2900638

+0

@ user2900638 문제는 동일하게 유지됩니다. 당신은'while (rs.next())'를 사용해야하는'if (rs.next())'를 사용하고 있습니다. –