2016-03-18 2 views
0

Im пытается сделать условное утверждение в моей программе GUI для Java. Я уже смог установить соединение с моей базой данных 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 

все остальное в программе, кажется, штраф за если оговорки, за исключением всегда возвращаются ложь и идти прямо к другому пункту

Любая помощь будет высоко ценится :)

+0

try if (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 может возвращать нуль.

0

Если вы хотите сравнить одну строку с другой, то всегда использовать это, если другие функции всегда возвращаются ложь:

if (rs2.getString(1).compareTo("ADMIN")==0){ 
       JOptionPane.showMessageDialog(null, "if statement working"); 
      } 
Смежные вопросы