首先,我了解可能会有更好的方法来访问存储的密码。这是一个基本项目,试图证明一个基本概念。

我在尝试验证用户使用数据库登录时遇到问题。

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”也永远不会进入控制台。

最佳答案

该错误实际上是在对数据库的查询中。查询所使用的变量是静态变量。我没有意识到常量的变量值永远不会改变。

09-25 23:03