【问题标题】:User authentication from database来自数据库的用户身份验证
【发布时间】:2015-08-17 14:43:33
【问题描述】:

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

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;

}
}

【问题讨论】:

  • 什么错误?请更具体。
  • 您是否尝试在没有验证的情况下连接数据库或者您错过了添加代码sn-p?

标签: java model-view-controller


【解决方案1】:

检查您的 SQL 查询?您在*user 之前缺少FROM。另外你需要在使用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;
  }
}

【讨论】:

    猜你喜欢
    • 2012-04-24
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多