0

mySql データベースからログインしたいのですが、ログインするとエラー メッセージが 2 回表示されます (ユーザー名またはパスワードが一致しません)。私のループが問題だと思います。私を助けてください。私の方法は以下です.....

private void loginProcess() {
        String username = jTextFieldLoginUsername.getText().toUpperCase();
        String password = jPasswordFieldLoginPassword.getText();

        List<LoginModel> list = new ArrayList<LoginModel>();
        LoginDao loginDao = new LoginDao();
        list = loginDao.doLogin();
        if (list.size() != 0) {
            for (LoginModel model : list) {
                String uName = model.getUsername();
                String pWord = model.getPassword();
                String userType = model.getUserType();
//                System.out.println("uName::" + uName);

                if (username.equals(uName) && password.equals(pWord)) {
                    if (userType.equals("1")) {
                        dispose();
                        Admin admin = new Admin();
                        admin.setVisible(true);
                    } else if (userType.equals("2")) {
                        dispose();
                        Purchase purchase = new Purchase();
                        purchase.setVisible(true);
                    } else if (userType.equals("3")) {
                        dispose();
                        Sales sales = new Sales();
                        sales.setVisible(true);
                    }
                } else {
                    JOptionPane.showMessageDialog(rootPane, "Username or Password does not match.");
                    jTextFieldLoginUsername.requestFocus();
                    jTextFieldLoginUsername.selectAll();
                }
            }
        } else {
        }
    }
4

2 に答える 2

2
String username = jTextFieldLoginUsername.getText().toUpperCase();

String uName = model.getUsername();

同じであるべきですか?.toUpperCase() を uName に追加してみてください。それは役に立ちますか?

于 2013-11-05T14:23:03.607 に答える
1

可能なログインのリストを調べて、取得した資格情報が一致しないたびに、メッセージを出力します。したがって、そのリストに 3 つのアイテムがある場合、そのうちの 2 つによってメッセージが出力されます。以前に一致するユーザーをすでに見つけていたとしても。

for ループのロジックを多少変更することをお勧めします。

boolean success = false
for (LoginModel model : list) {
            ...
            if (username.equals(uName) && password.equals(pWord)) {
                      success = true;
                      ...
            } // no else here
 }
 if(!success) {
      // do the error-message stuff 
 }
于 2013-11-05T14:30:07.627 に答える