这是我的服务
我尝试过多种方式,但在比较false
条件中的字符串时,它总是返回if
,if(pwd==dbpw)
也会返回false
,每次都像这段代码一样。
public boolean authenticate(String email,String pwd){
boolean result=false;
String dbpw="";
DBConnect myDB=new DBConnect();
Connection con=myDB.getConnection();
try {
Statement mySt=con.createStatement();
//ResultSet myRes=mySt.executeQuery("select pwd from admin where email=\'"+email+"\'");
ResultSet myRes=mySt.executeQuery("select pwd from admin where email=\'sankasumadura@gmail.com\'");
while(myRes.next()){
dbpw=myRes.getString("pwd");
}
if(pwd.equals(dbpw)){
result=true;
}else{
result=false;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
return result;
}
}
我尝试使用更多输入,但总是输出为false,但数据库检索正确的值,并且在if
条件内进行比较时会出现此问题。
请帮帮我。
答案 0 :(得分:0)
您可以检查您的viraible是否包含空格:
pwd=request.getParameter("pwd").toString().trim();
返回之前,您可以将值打印到控制台:
System.out.println("pwd:" + pwd + ",dbpw:" + dbpw + ",isequal:" + pwd.equals(dbpw));
if (pwd.equals(dbpw)) {
result = true;
} else {
result = false;
}