JOptionPane.showMessageDialog не запустится, и следующая строка также не будет запущена - PullRequest
0 голосов
/ 30 июня 2018

С первой попытки, прежде чем обновлять код и обновлять базу данных, вся система работает правильно. Проблема состоит в том, что когда имя пользователя и пароль корректны, окно сообщения также не появится в следующей форме. Массажная коробка просто появляется, когда имя пользователя и пароль неверны. База данных уже подключена и программа ее прочитала.

Вот мой код:

private void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) {
    try
    {
        pr = con.prepareStatement("SELECT * FROM Employee WHERE username = ? and pass = ?");

        String Us = Username.getText();
        String PW = Password.getText();

        if(Username.equals("") || Password.equals(""))
        {
            JOptionPane.showMessageDialog(null, "You Need To Fill Username and Password");
        }
        else
        {
            pr.setString(1, Us);
            pr.setString(2, PW);

            rs = pr.executeQuery();
            rs.next();

            String EmployeeName = rs.getString("nama");
            String Position = rs.getString("posisi");
            String EmpID = rs.getString("id");
            EmpLem = EmpID;

            if (Username.equals(rs.getString("username"))&& Password.equals(rs.getString("pass")))
            {

                if (Position.equals("Service"))
                {
                    JOptionPane.showMessageDialog(null, "Login Success! Welcome " + EmployeeName + ".");
                    EmployeeMenu serviced = new EmployeeMenu();
                    serviced.show();
                    this.hide();
                }

                else if (Position.equals("superadmin"))
                {
                    JOptionPane.showMessageDialog(null, "Login Success! Welcome " + EmployeeName + ".");
                    SuperMenu sm = new SuperMenu();
                    sm.show();  
                    this.hide();

                }

                else if (Position.equals("Warehouse"))
                {
                    JOptionPane.showMessageDialog(null, "Login Success! Welcome " + EmployeeName + ".");
                    WareHouseMan sm = new WareHouseMan();
                    sm.show();
                    this.hide();

                }
            }
        }

    }    

    catch(Exception ex)
    {
        JOptionPane.showMessageDialog(null, "Username or Password Didn't Match!!");
    }
}  

Здесь:

if (Position.equals("Service"))
{
    JOptionPane.showMessageDialog(null, "Login Success! Welcome " + EmployeeName + ".");
    EmployeeMenu serviced = new EmployeeMenu();
    serviced.show();
    this.hide();
}

1 Ответ

0 голосов
/ 30 июня 2018
 if(Username.equals("") || Password.equals(""))

В этом случае, если ваше имя пользователя не будет нулевым, а ваш пароль будет нулевым, то это вернет true, потому что

ИЛИ оператор проверяет первое условие, если это правда, то он не будет проверять второе. Если первое неверно, тогда проверяется другое условие

Итак, сначала исправьте это.

Во-вторых, вместо rs.next(); попробуйте использовать следующее, возможно, это сработает.

while(rs.hasNext()){......}
...