ResultSet数据与java中String的比较

时间:2016-03-18 16:31:37

标签: java db2

我试图在我的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子句

非常感谢任何帮助:)

3 个答案:

答案 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。