我试图在我的java GUI程序中创建一个条件语句。我已经能够与我的数据库db2建立连接,并且还能够执行查询以获取结果集。
问题是当我使用表数据与条件语句中的字符串进行比较时(if),它总是返回false并转到else子句,即使结果集中的数据与字符串im相比它也是如此到。
我写了下面的代码。
String query3 ="select * from module where uname='ADMIN' and modulename='SETADMIN'";
PreparedStatement pst2 = conn.prepareStatement(query3);
ResultSet rs2=pst2.executeQuery();
rs2.next();
if (rs2.getString(1)=="ADMIN"){
JOptionPane.showMessageDialog(null, "if statement working");
}
else{
JOptionPane.showMessageDialog(null, "if statement not working");
}
查询将获得的结果集如下所示
**UNAME MODULENAME CANADD CANEDIT CANDELETE**
ADMIN SETADMIN T T T
程序中的其他所有内容似乎都很好,除了if子句总是返回false并直接转到else子句
非常感谢任何帮助:)
答案 0 :(得分:1)
这是错误的if (rs2.getString(1)=="ADMIN"){
并且无效,因为您正在比较参考而不是对象的内容......
,请执行"ADMIN".equals(rs2.getString(1))
并查看此post/answer。不是比较对象的正确方法......
答案 1 :(得分:0)
如果你想比较一个字符串和另一个字符串,那么如果其他函数总是返回false,则总是使用它:
if (rs2.getString(1).compareTo("ADMIN")==0){
JOptionPane.showMessageDialog(null, "if statement working");
}
答案 2 :(得分:-1)
您可以使用
rs2.getString(1).equals("ADMIN")
或
"ADMIN".equals(rs2.getString(1))
后者更好,因为getString
可能返回null。