2013-04-28 3 views
2

У меня есть следующий код для запроса базы данных! Но код внутри цикла while не выполняется! Нет сообщений, просто не выполняется! Может кто-нибудь мне помочь! Набор результатов не пуст! Когда я печатаю одно и то же значение из блока try catch, он запускается, и правильные значения печатаются! Th DB-соединение является стандартным классом соединения DB DB!Код набора результатов не выполнен.

database = new DBConnection(); 

    String dept = txtSearch.getText(); 
    String Query = "SELECT * FROM department where dept_name= '" + dept + "'"; 

    ResultSet set = database.queryDatabase(Query); 

    try { 
     if (set.next() == false) { 
      JOptionPane.showMessageDialog(null, "No Matchs found for the search query! Try Again.", "Search Error", JOptionPane.ERROR_MESSAGE); 
     } else { 
      while (set.next()) { 
       System.out.print(set.getString("dept_name")); 
       txtName.setText(set.getString("dept_name")); 
       txtDes.setText(set.getString("dept_desc")); 
      } 
     } 
    } catch (SQLException ex) { 
     JOptionPane.showMessageDialog(null, ex.getMessage(), ex.getCause().toString(), JOptionPane.ERROR_MESSAGE); 
    } 

ответ

4

Вы выбрасывая первую строку запроса с помощью вызова set.next(), а затем игнорируя данные в строке здесь:

if (set.next() == false) { // ***** here on this line 
     JOptionPane.showMessageDialog(null, "No Matchs found for the search query! 
      Try Again.", "Search Error", JOptionPane.ERROR_MESSAGE); 
    } else { 
     while (set.next()) { 
      System.out.print(set.getString("dept_name")); 
      txtName.setText(set.getString("dept_name")); 
      txtDes.setText(set.getString("dept_desc")); 
     } 
    } 

Вместо быть уверены, чтобы извлечь информацию из ResultSet каждый раз, когда вы звоните next() и он возвращает true.

Вы могли бы сделать что-то вроде этого, вместо:

int setCount = 0; 
while (set.next()) { 
    setCount++; 
    System.out.print(set.getString("dept_name")); 
    txtName.setText(set.getString("dept_name")); 
    txtDes.setText(set.getString("dept_desc")); 
} 
if (setCount == 0) { 
    // show a warning to the user that the result set was empty 
} 
+0

Спасибо! :) Хотя я хочу условие проверки, и я нашел другой способ обойти это! :) Спасибо! –

+0

@DimalChandrasiri: Добро пожаловать! Как вы проверяете, что ResultSet не пуст? –

+0

Я не проверю результат. вместо этого я проверяю, пусто ли текстовое поле! –