将MySQL DB对象与Java中的String进行比较

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

标签: java mysql boolean

我正在制作一个程序来管理数据库中的学生,我正在研究学生可以登录的部分,但由于某种原因,我永远无法得到if声明。我认为它与我从数据库获得的价值有关,而不是字符串。我已经尝试将其转换为String但我收到错误,无论如何我可以比较这两个值吗?我的代码如下,所以你可以看看。我知道还有其他这样的问题,但是我还没有能够让他们的任何解决方案起作用。非常感谢提前。

public void actionPerformed(ActionEvent e)
    {
        //int i;
        //String name;

        if(e.getSource()==logInButton)
        {
            String name="";
            String password="";

            name=inputField.getText();
            password=inputField2.getText();




            try {
                connection = DriverManager.getConnection(connectionString, username, pass);
                PreparedStatement statement = (PreparedStatement) connection.prepareStatement("SELECT * FROM students");
                data = statement.executeQuery();
                while(data.next()){
                    //login = data.getObject("student_id").equals(name) && data.getObject("password").equals(password);
                    if(data.getObject("student_id").equals(name) && data.getObject("password").equals(password))
                    {
                        System.out.println("login = true");
                        logInPanel.setVisible(false);
                        postLogInPanel.setVisible(true);
                    }

                }
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

        }

2 个答案:

答案 0 :(得分:0)

而不是:

data.getObject("student_id");

尝试:

data.getString("student_id");

这假设您的student_id字段是某种字段。您也可以尝试使用

进行比较
.equalsIgnoreCase //instead of .equals for username unless it is case sensitive...

答案 1 :(得分:0)

首先,您需要查询数据库,如

 SELECT * FROM students where username='THE ENTER USERNAME' and password='Entered password'

如果结果集的大小== 1则登录其他无效凭据或用户不退出...

对象的数据可以通过 data.getInt( “student_id数据”); ..