If-Else不能在Java Netbeans中正常工作

If-Else不能在Java Netbeans中正常工作,java,netbeans,Java,Netbeans,我想寻求帮助。我的else in if else不是我想要的那样工作。 若条件正常工作,但当我为测试执行其他操作时,它在没有任何反馈的情况下无法工作,因为我在其他操作中创建了JOptionPane.show.Message private void BtnMasukActionPerformed(java.awt.event.ActionEvent evt) { try { sql = "S

我想寻求帮助。我的else in if else不是我想要的那样工作。 若条件正常工作,但当我为测试执行其他操作时,它在没有任何反馈的情况下无法工作,因为我在其他操作中创建了JOptionPane.show.Message

private void BtnMasukActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        sql = "SELECT * FROM kasir WHERE username='" + TxtUser.getText() + "' AND password='" + TxtPass.getText() + "'";
        try {
            rs = stm.executeQuery(sql);
        } catch (SQLException ex) {
            Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            while (rs.next()) {
                setNama(rs.getString("nama_kasir"));
                setHak(rs.getString("hak_akses"));
                if (TxtUser.getText().equals(rs.getString("username")) && TxtPass.getText().equals(rs.getString("password"))) {
                    JOptionPane.showMessageDialog(null, "Anda Berhasil Login");
                    this.dispose();
                    new home().setVisible(true);
                } else {
                    JOptionPane.showMessageDialog(null, "Maaf, Username atau Password Anda Salah");
                }
                break;
            }
        } catch (SQLException ex) {
            Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex);
        } catch (HeadlessException e) {
            JOptionPane.showMessageDialog(this, e.getMessage());
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex);
        }
    } catch (HeadlessException e) {

    }
}        

这是一种非常糟糕的做法

 "SELECT * FROM kasir WHERE username='" + TxtUser.getText() + "' AND password='" + TxtPass.getText() + "'";
因为任何人都可以注入sql。检查。使用
准备好的语句

回答你的问题。首先,您正在执行的查询是搜索用户和密码。因此,如果您设置了错误的密码,它将不会返回任何信息

if (!resultSet.isBeforeFirst() ) {    
System.out.println("USer not found, or incorrect password");
 } else
{
           while (rs.next()) {
                setNama(rs.getString("nama_kasir"));
                setHak(rs.getString("hak_akses"));
                if (TxtUser.getText().equals(rs.getString("username")) && TxtPass.getText().equals(rs.getString("password"))) {
                    JOptionPane.showMessageDialog(null, "Anda Berhasil Login");
                    this.dispose();
                    new home().setVisible(true);
                } 
                break;
            }
}

刚才我尝试了这个方法&它是有效的,但是如何在下一帧中显示用户名呢

 private void BtnMasukActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try{

        ResultSet result = stm.executeQuery("select * from kasir where username='" +TxtUser.getText()+"';");           


        if(result.next()){

            if(TxtPass.getText().equals(result.getString("password"))){

                JOptionPane.showMessageDialog(null, "Login Berhasil");
                this.dispose();
                new home().show();

            }else{

                JOptionPane.showMessageDialog(null, "Password Salah");
                TxtPass.setText("");
                TxtUser.requestFocus();
            }
        }else{

            JOptionPane.showMessageDialog(null, "User Tidak Ditemukan");
            TxtUser.setText("");
            TxtPass.setText("");
            TxtUser.requestFocus();
        }

    }catch(HeadlessException | ClassNotFoundException | SQLException e){
        JOptionPane.showMessageDialog(null, "Gagal");
    }
}         

您正在调用的对象是什么?我正在调用另一个jframe=home,因此我使用dispose()登录jframe或仅此jframe您的查询仅在用户名和密码(在明文中,不要这样做!)匹配时返回数据。那么,为什么要在
if
中再次检查它?是if语句正在执行还是出现语法错误?无关:变量名应该是camelCase,而不是TxtUser。从UI事件侦听器直接访问数据库也是非常糟糕的做法。说真的:你想把这些东西解耦。这是什么?这是你问题的正确答案吗?如果不是的话,想一想添加一个新问题作为答案是否有意义。。。