Java else 语句错误

标签 java mysql sql if-statement jdbc

如果我输入错误的用户名和密码,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/

相关文章:

java - Spring 3.1 Autowiring 具有多个泛型参数的泛型类

php - Yii2 并将数据作为 UTC 存储在数据库中

c# - SQL登录系统

SQL Server 日期/时间重叠检查事件调度

java - UnreachableBrowserException - 在 OrangePiOne 上使用 PhantomJS 和 java 时 (Ubuntu 18.04.2)

java - Hibernate 幂等更新

mysql - SQL 连接语法 : put data filter in "on clause" or "where clasuse"?

PHP 将 MySQL 响应数组处理成唯一记录数组

mysql - 在 MySQL 中选择使用 `database_name` .`viewname` .* 语法会抛出 "Unknown table ' database_name.viewname'"

java - 为什么 Files.deleteDirectoryContents() 在 Guava 中被弃用?