If-Else不能在Java Netbeans中正常工作
我想寻求帮助。我的else in if else不是我想要的那样工作。 若条件正常工作,但当我为测试执行其他操作时,它在没有任何反馈的情况下无法工作,因为我在其他操作中创建了JOptionPane.show.MessageIf-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
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事件侦听器直接访问数据库也是非常糟糕的做法。说真的:你想把这些东西解耦。这是什么?这是你问题的正确答案吗?如果不是的话,想一想添加一个新问题作为答案是否有意义。。。