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