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"은 절대로 콘솔에 들어 가지 않습니다.
스키마 이름 (즉, username = ' "usernameValue +"'계정의 암호를 선택하십시오.)없이 쿼리를 시도 할 수 있습니까? 이제 내가 왜 이것을 말하고 있는지에 대한 제한된 근거가 있습니다. 결코 루프에 들어 가지 않는다면, 결과 세트가 비어 있다는 것을 의미하며, 이것이 비어있는 이유를 알아 내려고합니다. 이것은 첫 번째 단계가 될 수 있습니다. –
루프가 시작되지 않았 음을 알 수 있습니까? inputValue == null. 그것은 inputValue가 아니어야합니다! = null? – m0rjjj
는 ramachandran, 동일한 결과를 작동하지 않았다. m0rjjj를 명확히하려면, 코드가 라인에 도착하는 순간 (rs.next()) 루프를 건너 뜁니다. 테이블에있는 값이 있습니다. 테이블을 지우려면 retrivieing 정보가 null이 아닙니다. – TheDeveloper