Java - 未更改布尔值的问题

时间:2014-12-01 01:40:56

标签: java mysql boolean

我正在研究学生数据库管理程序,正在进行登录阶段。我在数据库中查询学生ID和密码,并尝试匹配学生输入的内容。找到匹配项时,login应该设置为true,它应该转到下一页,但由于某种原因,它永远不会传递我的if then语句。我不确定什么是错的,这个代码在下面。你会注意到system.out.println语句,那些我在那里可以看到它是否真的正确地通过数据库,并且据我所知,但是login next设置为true。我真的很感激任何帮助。

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);
            }
        }

1 个答案:

答案 0 :(得分:0)

在Java中,==是对象标识。如果a==ba是对内存中同一对象的引用,则b为真。当您比较引用类型时,例如String以及可能返回的e.getSource(),您应该使用equals方法查看值是否相同。