2014-09-27 3 views
-1

세부 정보를 입력 할 때 사용자 이름의 가용성을 확인해야합니다. 누가 Java에서 최대 절전 모드를 사용하지 않고도 어떻게 할 수 있습니까?사용자 정보 확인 방법

public static boolean checkUseName (String username) { 

    boolean status = false; 

    try { 
     Connection con = DB.myCon(); 
     Statement S = con.createStatement(); 
     String query3 = "select userId from employee where userId ='"+username+"'"; 

     ResultSet rs = S.executeQuery(query3); 
     status = rs.equals(""); 

    } catch (Exception e) { 

     e.printStackTrace(); 

    } 

    return status; 
} 
+0

이 코드 쓰기 서비스가 아닙니다. 제발 어떤 노력을 보여주세요. – msrd0

+0

여기에 필자가 시도한 코드가 있습니다 ... 그러나 couldnt는 내가 예상 한 결과를 얻었습니다. –

+0

요청이 특정'userId'를 요청하기 때문에 결과 집합에 행이 들어 있는지 확인해야합니다. 따라서 [rs.next()'] (http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#next())에 대한 단일 호출로 충분합니다. 'true '를 반환하면'userId'를 가진 행이 하나 이상 있습니다. 그러나 SQL'String'을 연결하는 대신'PreparedStatement'를 사용하는 법을 배워야합니다. 그렇지 않으면 언젠가는 [SQL 주입] (http://en.wikipedia.org/wiki/SQL_injection)의 비타민이 될 것입니다 ... – Holger

답변

0

당신 오류가 여기에 있습니다 : ResultSetString 동일 결코 때문에 항상 false를 반환합니다

rs.equals("") 

. 당신이 원하는 것은 ResultSet이 비어 있는지 확인하는 것입니다. 이것은 함께 테이블 employee에서 모든 행을 계산합니다

String query3 = "SELECT COUNT(*) FROM employee WHERE userId ='"+username+"'"; 
ResultSet rs = S.executeQuery(query3); 
status = (rs.getInt(0) == 0); // Note that rs can be null here 

: 더 isEmpty() 방법이 없기 때문에 보인다, 그래서 당신은이 같은 모든 행을 계산해야합니다으로

이것은 쉽지 않다 주어진 조건 (WHERE userId ='"+username+"'). 그런 다음 당신은 다음 코드와 함께 일 0

0

카운트가 있는지 여부를 확인할 수 있습니다

public static boolean checkUseName (String username) { 

    boolean status = false; 

    try { 
     Connection con = DB.myCon(); 
     Statement S = con.createStatement(); 
     String query3 = "SELECT COUNT(*) FROM employee.user WHERE userId ='" + 
       username + "'"; 

     ResultSet rs = S.executeQuery(query3); 
     boolean next = rs.next(); 
     int a = rs.getInt("COUNT(*)"); 

     status = (a == 0); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return status; 
}