JOptionPane.showMessageDialog 不会 运行 下一行也不会 运行ning

JOptionPane.showMessageDialog won't run and the next line is also not running

在我更新代码和更新数据库之前的第一次尝试所有系统 运行 正确。问题是当用户名和密码更正时,消息框也不会出现在下一个表单中。当用户名和密码错误时,才会出现按摩框。数据库已经连接,程序读取它。

这是我的代码:

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();
}
 if(Username.equals("") || Password.equals(""))

在这种情况下,如果您的用户名不为空且密码为空,那么这将 return 为真,因为

OR 运算符检查第一个条件,如果为真则不会检查第二个条件。如果第一个不成立,那么它将检查另一个条件

所以首先更正。

其次,代替 rs.next(); 尝试使用以下内容,也许它有效。

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