如果其他-Else在Java Netbeans中无法正常工作

时间:2018-07-12 13:04:41

标签: java netbeans

我想寻求帮助。我在if-else中的其他方法无法按我的要求工作。 如果条件正常运行,但是当我进行其他测试时,它在没有任何反馈的情况下无法正常工作,原因是我在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) {

    }
}        

2 个答案:

答案 0 :(得分:0)

这是非常不好的做法

 "SELECT * FROM kasir WHERE username='" + TxtUser.getText() + "' AND password='" + TxtPass.getText() + "'";

因为任何人都可以注入sql。选中this image。请改用prepared statements

回答您的问题。首先,您正在执行的查询正在搜索USER和PASSWORD。因此,如果您设置了错误的密码,它将不会返回任何内容。

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;
            }
}

答案 1 :(得分:-2)

现在我尝试了这种方法并且它有效,但是如何获取用户名以显示在下一帧?

 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");
    }
}