나는 학생 데이터베이스 관리 프로그램을 작성 중이며 로그인 단계에서 작업 중입니다. 나는 학생 ID와 패스워드를 데이터베이스에 질문하고 학생이 입력 한 것과 일치하는 항목을 시도한다. 일치가 발견되면 로그인을 true로 설정해야하며 다음 페이지로 가야하지만 어떤 이유로 인해 if then 문을 절대 통과하지 못합니다. 나는 완전히 틀린 것은 아니지만이 코드는 아래에있다. system.out.println 문을 보게 될 것입니다. 따라서 데이터베이스가 실제로 올바르게 실행되는지 확인할 수 있습니다. 가능한 한 실제로 알 수 있지만 로그인은 true로 설정됩니다. 어떤 도움을 주셔서 감사합니다.Java - 부울 값이 변경되지 않는 문제
public void actionPerformed(ActionEvent e)
{
//int i;
//String name;
if(e.getSource()==logInButton)
{
String name="";
String password="";
name=inputField.getText();
password=inputField2.getText();
System.out.println(name);
System.out.println(password);
boolean login = false;
try {
connection = DriverManager.getConnection(connectionString, username, pass);
PreparedStatement statement = (PreparedStatement) connection.prepareStatement("SELECT * FROM students");
data = statement.executeQuery();
while(data.next()){
System.out.println(data.getObject("student_id"));
System.out.println(data.getObject("password"));
if (data.getObject("student_id") == name && data.getObject("password") == password){
login = true;
}
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(login == true){
System.out.println("login = true");
logInPanel.setVisible(false);
postLogInPanel.setVisible(true);
}
}
물론 데이터베이스에서 해당 열을 Null 허용하지 않는 한; 이 경우'name.equals (data.getObject ("student_id"))'와 같은 조건을 반대로하는 것이 더 안전합니다. 그리고 실제로'name' 필드의 내용과 데이터베이스의'student_id' 값을 비교하려고 했습니까? –
예, 원래 데이터베이스 이름에 name이라는 이름의 필드가 있었지만 아직 변경하지 않았습니다. 도움을 주셔서 감사합니다. – user3082473
if (name.equals (data.getObject ("student_id")) && password.equals (data.getObject ("password")))로 변경했습니다. 그러나 어떤 이유로 여전히 작동하지 않습니다 ??? – user3082473