如果我输入错误的用户名和密码,JOptionPane 框会持续出现至少 3 次。首先,它是否是一个 while 循环。
我花了几个小时查看代码并尝试修改它,但没有成功。也无法获得太多帮助,但如果有人能够指出或修复我的错误,我将不胜感激。
我遇到问题的代码如下。
try{
PreparedStatement ps = con.prepareStatement("SELECT Login, Password, Restriction FROM Users");
ResultSet rs = ps.executeQuery();
while(rs.next()){
if (username.equals(rs.getString("Login")) && password.equals(rs.getString("Password")) && ("Admin".equals(rs.getString("Restriction")))){
this.setVisible(false);
MainMenuAdmin admin = new MainMenuAdmin();
admin.setVisible(true);
}
else if (username.equals(rs.getString("Login")) && password.equals(rs.getString("Password")) && ("Engineer".equals(rs.getString("Restriction")))){
this.setVisible(false);
MainMenuEngineer engineer = new MainMenuEngineer();
engineer.setVisible(true);
}
else if (!username.equals(rs.getString("Login")) || !password.equals(rs.getString("Password"))){
JOptionPane.showMessageDialog(null, "Login Failed");
}
}
}
catch(SQLException sqle){
sqle.printStackTrace();
}
另外,如何对其进行编码,以便如果用户名或密码不存在,则显示“用户名或密码不存在”?
最佳答案
你的方法有很大缺陷。用不好的方法来修复错误是没有意义的。请像这样更改您的查询
选择限制,ADD_REQD_FIELDS...,来自用户登录 = ?和密码=?
如果resultset
计数为1
,那么您有一个有效的用户。这样您就可以检查用户的身份验证并从数据库中检索用户信息,如下所示出色地。你的方法不必要地过于复杂。
关于Java else 语句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22422241/