Java 在我的JDBC项目中,总是if条件返回false

Java 在我的JDBC项目中,总是if条件返回false,java,jdbc,Java,Jdbc,这是我的服务 我尝试了各种方法,但在比较if条件中的字符串时,它总是返回false,if(pwd==dbpw)也是返回false,每次都是这样的代码 public boolean authenticate(String email,String pwd){ boolean result=false; String dbpw=""; DBConnect myDB=new DBConnect(); Connection co

这是我的服务

我尝试了各种方法,但在比较
if
条件中的字符串时,它总是返回
false
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;
                }





    }
我尝试使用更多的输入,但输出总是错误的,但数据库检索到正确的值,当在
if
条件中进行比较时,就会出现这个问题。
请帮助我。

您可以检查您的虚拟文件是否包含空格:

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;
}

您可以检查您的虚拟表格是否包含空格:

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;
}

为了确定这是一个空格还是大小写问题,可以尝试:if(pwd.trim().equalsIgnoreCase(dbpw.trim()){当您在比较之前打印它们时,您看到了
pwd
dbpw
的哪些值?或者在代码中插入一行日志以查看变量的内容,例如
log.debug(“pwd=[{}],dbpw=[{}]”,pwd,dbpw);
(或
System.out.println(“pwd=[“+pwd+”],dbpw=[“+dbpw+”]”);
如果你没有日志实例)。顺便说一句。在数据库中存储明文密码肯定是个坏主意。密码必须用哈希法进行哈希处理,例如使用。当'trim()时,它会正确运行'字符串对象,非常感谢您必须确定这是一个空格还是大小写问题,请尝试:if(pwd.trim().equalsIgnoreCase(dbpw.trim())){code>pwd和
dbpw
在比较之前打印出来时,您看到了哪些值?或者在代码中插入一行日志以查看变量的内容,例如
log.debug(“pwd=[{}],dbpw=[{}]”,pwd,dbpw”);
(或者
System.out.println(“pwd=[“+pwd+”,dbpw=[+dbpw+”)
如果您没有日志实例)。顺便说一句,在数据库中存储明文密码绝对不是一个好主意。密码必须经过哈希处理,例如使用。当“trim()”字符串对象时,它会正确运行,非常感谢