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

好吧,您浏览了一个可能的登录列表,每次您获得的凭据不匹配时,您都会打印该消息。因此,如果您在该列表中有三个项目,其中两个将导致打印消息。即使您之前已经找到了匹配的用户。

我建议稍微改变一下你的 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 回答