我想在netbeans中的数据库使用按钮中调用id和密码,所以我确实喜欢这个
private void loginActionPerformed(java.awt.event.ActionEvent evt) {
try {
String sql="select *from login where ID = '"+id.getText()+"'and Password = '"+String.valueOf(pass.getPassword())+"'and Status ='"+pilih1.getSelectedItem().toString()+"'";
ResultSet rss1=st.executeQuery(sql);
if ((rss1.next())&&(pilih1.getSelectedItem().toString() == "Pasien")){
pasien1 = new pasien1();
pasien1.setVisible(true);
this.dispose();
System.out.println("haha");
}
else if ((rss1.next())&&(pilih1.getSelectedItem().toString() == "Dokter")){
dokter1 = new dokter1();
dokter1.setVisible(true);
this.dispose();
}
else if ((rss1.next())&&(pilih1.getSelectedItem().toString() == "Staff")){
staff1 = new staff1();
staff1.setVisible(true);
this.dispose();
}
else{
JOptionPane.showMessageDialog(null, "Gagal Login");
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Terjadi Kesalahan");
}
}
这个源代码可以编译我没有错误 但为什么这个代码只能执行if和else而不能执行else if 给出解决方案。 。
答案 0 :(得分:0)
这里有两个主要问题:
String
是对象,因此需要将它们与equals
方法进行比较,而不是==
运算符,它检查对象身份,不是平等。ResultSet.next()
会使光标前进,因此您应该之前 if-else结构。在当前代码中,每当评估其中一个条件时,光标就会前进,这不是您想要的行为。简而言之:
ResultSet rss1=st.executeQuery(sql);
boolean hasResults = rss1.next()
if (hasResults && pilih1.getSelectedItem().toString().equals("Pasien")) {
pasien1 = new pasien1();
pasien1.setVisible(true);
this.dispose();
System.out.println("haha");
}
else if (hasResults && pilih1.getSelectedItem().toString().equals("Dokter")) {
dokter1 = new dokter1();
dokter1.setVisible(true);
this.dispose();
}
else if (hasResults && pilih1.getSelectedItem().toString().equals("Staff")){
staff1 = new staff1();
staff1.setVisible(true);
this.dispose();
}
else{
JOptionPane.showMessageDialog(null, "Gagal Login");
}