2014-12-01 4 views
0

나는 학생 데이터베이스 관리 프로그램을 작성 중이며 로그인 단계에서 작업 중입니다. 나는 학생 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); 
      } 
     } 

답변

0

==은 개체 ID입니다. a==bab이 메모리의 동일한 개체를 참조하는 경우 true입니다. String과 같은 참조 유형을 비교할 때 e.getSource()이 반환하는 값이 무엇이든간에 equals 메소드를 사용해야 값이 동일한 지 확인할 수 있습니다.

+0

물론 데이터베이스에서 해당 열을 Null 허용하지 않는 한; 이 경우'name.equals (data.getObject ("student_id"))'와 같은 조건을 반대로하는 것이 더 안전합니다. 그리고 실제로'name' 필드의 내용과 데이터베이스의'student_id' 값을 비교하려고 했습니까? –

+0

예, 원래 데이터베이스 이름에 name이라는 이름의 필드가 있었지만 아직 변경하지 않았습니다. 도움을 주셔서 감사합니다. – user3082473

+0

if (name.equals (data.getObject ("student_id")) && password.equals (data.getObject ("password")))로 변경했습니다. 그러나 어떤 이유로 여전히 작동하지 않습니다 ??? – user3082473