2016-08-17 4 views
0

먼저, 저장된 비밀번호에 액세스하는 더 좋은 방법이 있음을 이해합니다. 이것은 기본적인 개념을 증명하려고하는 기본 프로젝트입니다.데이터베이스에서 비밀번호 값을 가져 오는 중 오류가 발생했습니다.

데이터베이스에 대한 사용자 로그인의 유효성을 검사하는 데 문제가 있습니다.

while(inputValue == null) { 
      System.out.println(PASSWORD_MESSAGE); 
      inputValue = in.nextLine(); 

      try { 
       rs = statement.executeQuery(PASSWORD_QUERY); 
       while(rs.next()) { 
        System.out.println("TEST"); 
        if(inputValue.equals(rs.getString("password"))) { 
         passwordValue = inputValue; 
         password= true; 
         break; 
        } 
        if(!inputValue.equals(rs.getString("password"))){ 
         System.out.println(ERROR_MESSAGE); 
         inputValue = null; 
         break; 
        } 
       } 
      } catch(SQLException e) { 
       e.printStackTrace(); 
      } 
     } 

PASSWORD_QUERY 나는 두 데이터베이스에서이 쿼리를 확인하고 그것을 잘 작동을한다 (SELECT password FROM project.account WHERE username='" + usernameValue + "')

입니다. 내 오류가 while 루프에서 발생합니다. 디버그 모드에서는 절대로 while 루프에 들어 가지 않으며 system.out 메시지 "TEST"은 절대로 콘솔에 들어 가지 않습니다.

+0

스키마 이름 (즉, username = ' "usernameValue +"'계정의 암호를 선택하십시오.)없이 쿼리를 시도 할 수 있습니까? 이제 내가 왜 이것을 말하고 있는지에 대한 제한된 근거가 있습니다. 결코 루프에 들어 가지 않는다면, 결과 세트가 비어 있다는 것을 의미하며, 이것이 비어있는 이유를 알아 내려고합니다. 이것은 첫 번째 단계가 될 수 있습니다. –

+1

루프가 시작되지 않았 음을 알 수 있습니까? inputValue == null. 그것은 inputValue가 아니어야합니다! = null? – m0rjjj

+0

는 ramachandran, 동일한 결과를 작동하지 않았다. m0rjjj를 명확히하려면, 코드가 라인에 도착하는 순간 (rs.next()) 루프를 건너 뜁니다. 테이블에있는 값이 있습니다. 테이블을 지우려면 retrivieing 정보가 null이 아닙니다. – TheDeveloper

답변

0

오류가 실제로 db에 대한 쿼리에있었습니다. 쿼리에서 사용 된 변수는 정적 변수입니다. 상수에 대한 변수 값이 절대로 변경되지 않는다는 것을 알지 못했습니다.

관련 문제