Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自数据库的用户身份验证_Java_Model View Controller - Fatal编程技术网

Java 来自数据库的用户身份验证

Java 来自数据库的用户身份验证,java,model-view-controller,Java,Model View Controller,请帮助我修复此程序中的错误。问题是,即使我使用了正确的用户名和密码,我也无法创建经过验证的登录 public class LoginDao { public static boolean CheckUser(String Username,String Password) { boolean st =false; String dbUsername, dbPassword; try{ Class.forName("com.mysql.jdbc.Driver");

请帮助我修复此程序中的错误。问题是,即使我使用了正确的用户名和密码,我也无法创建经过验证的登录

public class LoginDao {
public static boolean CheckUser(String Username,String Password) 
 {
  boolean st =false;
  String dbUsername, dbPassword;

   try{


     Class.forName("com.mysql.jdbc.Driver");


     Connection con=DBConnection.getConnection();

        String qry ="select *user where Username=? and Password=?";
        PreparedStatement pst = con.prepareStatement(qry);
     //pst.setString(1, Username);
     //pst.setString(2, Password);
     pst.executeQuery(qry);



        ResultSet rs = pst.getResultSet();

        while(rs.next()){
            dbUsername = rs.getString("Username");
            dbPassword = rs.getString("Password");

            if(dbUsername.equals(Username) && dbPassword.equals(Password)){
                System.out.println("Welcome");
                st = true;
            }

        }
   }

  catch(Exception e)
  {
      e.printStackTrace();
  }



return st;

}
}

检查您的SQL查询?您缺少
*
之前的
用户的
。使用
PreparedStatement
时,还需要设置参数,并将其注释掉

更新

试试这个:

public class LoginDao {
  public static boolean CheckUser(final String username, final String password) {
    final String qry ="SELECT * FROM user WHERE Username=? AND Password=?";
    Connection con = null;
    PreparedStatement pst;
    ResultSet rs = null;

    try {
      Class.forName("com.mysql.jdbc.Driver");
      con = DBConnection.getConnection();
      pst = con.prepareStatement(qry);
      pst.setString(1, username);
      pst.setString(2, password);
      pst.executeQuery(qry);
      rs = pst.getResultSet();
      // Notice I changed the 'while' by 'if'
      if (rs.next()) {
        return (username.equals(rs.getString("Username")) && password.equals(rs.getString("Password")));
      }
    } catch (final Exception e) {
      e.printStackTrace();
    } finally {
      // close/release (database resources) 'con', 'pst', 'rs' here
    }
    return false;
  }
}

什么错误?请更具体一点。您是否尝试在未经验证的情况下连接到数据库,或者是否错过了添加代码段的步骤?