簡體   English   中英

Java else語句錯誤

[英]Java else statement error

如果輸入錯誤的用戶名和密碼,JOptionPane框將至少出現3次。 首先,它甚至是一個循環。

我花了幾個小時看代碼並試圖修改它但沒有運氣。 也無法獲得太多幫助,但如果有人可以指出或修復我的錯誤,我將非常感激。

我遇到問題的代碼如下。

       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();
    }

另外如何對代碼進行編碼,如果用戶名或密碼不存在,則說“用戶名或密碼不存在”?

你的方法存在很大缺陷。 在錯誤的方法中修復錯誤是沒有意義的。 請更改您的查詢

SELECT Restriction,ADD_REQD_FIELDS..., FROM Users Login = ? and Password = ?

如果resultset計數為1 ,則表示您擁有有效用戶。這樣您就可以檢查用戶的身份驗證並從數據庫中檢索用戶信息。 你的方法不必要地過於復雜。

你接近是完全錯誤的。

  1. 您應該實際查詢數據。 使用您擁有的數據庫。
  2. 完成后,您應該close()資源。

這是一種檢查登錄詳細信息的方法。 它從數據庫中查詢usernamepassword

public String checkLogin(final Connection con, final String username, final String password) throws SQLException {
    final String q = "SELECT Restriction FROM Users WHERE Login = ? AND Password = ?";
    try (final PreparedStatement ps = con.prepareStatement(q)) {
        ps.setString(1, username);
        ps.setString(2, password);
        try (final ResultSet rs = ps.executeQuery()) {
            if (!rs.next()) {
                return "Invalid";
            }
            return rs.getString("Restriction");
        }
    }
}

你會這樣使用它:

public void checkLogin() {
    try {
        final String loginResult = checkLogin(con, username, password);
        switch (loginResult) {
            case "Admin":
                this.setVisible(false);
                MainMenuAdmin admin = new MainMenuAdmin();
                admin.setVisible(true);
                return;
            case "Engineer":
                this.setVisible(false);
                MainMenuEngineer engineer = new MainMenuEngineer();
                engineer.setVisible(true);
            default:
                JOptionPane.showMessageDialog(null, "Login Failed");
        }
    } catch (SQLException sqle) {
        sqle.printStackTrace();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM