2016-03-18 79 views
0

我试图在我的java GUI程序中创建条件语句。我已经能够与我的数据库db2建立连接,并且能够执行查询来获得结果集。将ResultSet数据与java中的字符串进行比较

问题是,当我使用表数据与条件语句(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

尝试如果(rs2.getString(1).equals(“ADMIN”) –

+0

感谢您的帮助 – SoulRider

+0

不完全重复... – Charles

回答

1

这是错误的if (rs2.getString(1)=="ADMIN"){,不工作,因为你是比较引用和对象的不是内容...

,而不是做"ADMIN".equals(rs2.getString(1)),如果您想了解为什么“看看这个post/answer ==“是不是比较对象以正确的方式...

+0

另一件需要考虑的事情是DB2中的数据可能是固定长度的字符数据一个可变长度的字符串。你可能会回到'ADMIN'而不是'ADMIN'。 – Charles

-1

您可以使用

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

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

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

0

如果你想一个字符串比较一个又一个,然后一直用这个,如果其他功能总是返回false:

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