ResultSet 数据与 java 中的 String 比较

ResultSet data comparison to String in java

我正在尝试在我的 java GUI 程序中创建条件语句。我已经能够与我的数据库 db2 建立连接,也能够执行查询以获得结果集。

问题是,当我使用 table 数据与条件语句 (if) 中的字符串进行比较时,它总是 returns false 并转到 else 子句,即使数据来自结果集与我比较的字符串相同。

我写了下面的代码。

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 子句

任何帮助将不胜感激:)

您可以使用

rs2.getString(1).equals("ADMIN")

"ADMIN".equals(rs2.getString(1))

后者更好,因为 getString 可能 return null。

这是错误的 if (rs2.getString(1)=="ADMIN"){ 并且不起作用,因为您比较的是引用而不是对象的内容...

如果您想了解为什么“==”不是比较的正确方法,请改为 "ADMIN".equals(rs2.getString(1)) 并查看此 post/answer对象...

如果你想将一个字符串与另一个字符串进行比较,那么在其他函数总是返回 false 的情况下总是使用这个:

if (rs2.getString(1).compareTo("ADMIN")==0){
                JOptionPane.showMessageDialog(null, "if statement working");
            }