字符串的比较不会返回true,即使它们是相同的

时间:2014-11-30 15:11:12

标签: mysql processing

我目前正在创建一个超级简单的登录系统,仅用于处理教育目的。

我正在做的就是将使用controllerP5库创建的2个文本字段的输入与我使用BezierSQlib库连接的MySQL数据库中的信息进行比较。所有代码都包含在一个名为DbHandler的类中的方法中,该类包含与数据库相关的所有代码。

但最后的if语句将我从数据库中检索到的密码与用户输入的密码进行比较将无效。即使2个字符串相同,它们也不会返回true。我试过放入“if('1234 =='1234')”并返回true。

但是,如果我这样做“if(_rPass =='1234')”,其中_rPass是数据库中的密码,并且密码设置为1234,它仍然返回false。

void loginCheck(String name, String password){ //This is the method that checks if the login information is correct
String _rPass; //where we store the retrieved password from the database

if(_msql.connect()){ //if there´s connection to the database 
  println("connection"); //we write out there´s a connection in the prompt

 _msql.query("SELECT password FROM users WHERE username='" + name + "'"); //a query is done to find the matching password to the username

 _msql.next(); //selects the next row in the retrieved table

    if(_msql.getString(1) == null){ //if there´s no user with that username in the user table
      println("wrong username"); //the username must be wrong
    } //end if
    else{ //if something is returned!

        _rPass = _msql.getString(1); //the password from the database is stored in _rPass

        if(_rPass == password) { //!!!THIS WILL NOT RETURN TRUE NO MATTER WHAT!!!
          println("succesfull login!"); //if the strings are the same we´re logged in!
        }

        else{
          println("wrong password");
        }
    }
}

}

以下代码是“DbHandler”类的一部分,它控制与数据库相关的所有代码,并通过方法在另一个名为“interface”的类中调用。

激活上述方法的部分如下:

      if(btn_login.isPositionWithinButton(mouseX,mouseY)){ //checks if the login button has been clicked
    DbHandler.loginCheck( cp5.get(Textfield.class,"username").getText(), cp5.get(Textfield.class,"password").getText() ); //the loginCheck method is called with the arguments being the text from the textFields
}

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用字符串。等于方法而不是==。

As ==比较引用,因此如果引用不相同,它将返回false。

比较字符串使用等值方法的值。

我。即如果(_rpass.equals(密码)){}