1

我正在尝试用数据库中的数据验证在JSP页面中输入的用户名和密码,所有参数都来了,但是即使匹配数据,该函数也会返回false。我的错是什么?

这是我的代码:

public class LoginService {
    public boolean loginCheck(String username, String password){
        String query;
        String dbUsername, dbPassword;
        boolean login = false;

        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/blog_u", "root", "root");
            Statement stmt = (Statement) con.createStatement();
            query = "SELECT username, password FROM user;";
            stmt.executeQuery(query);
            ResultSet rs = stmt.getResultSet();

            while(rs.next()){
                dbUsername = rs.getString("username");
                dbPassword = rs.getString("password");

                if(dbUsername == username && dbPassword == password){
                    System.out.println("OK");
                    login = true;
                }
                System.out.println(username + password + " " + dbUsername + dbPassword);
            }
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return login;
    }
}
4

1 回答 1

3
if(dbUsername == username && dbPassword == password){

应该改为

if(dbUsername.equals(username) && dbPassword.equals(password)){

不应==在 java 中比较字符串。请参阅如何比较 Java 中的字符串?.

于 2013-04-28T15:42:23.410 回答