2012-05-29 2 views
0

Что не так с моим кодом? второй JcomboBox показывает только один элемент, даже если в базе данных больше. Вот как это должно работать: Первый JcomboBox заполняется данными из базы данных, в зависимости от выбора пользователя в первом comboBox, второй заполняется, затем некоторые Jlabels заполняются данными в зависимости от выбранного пункта со второго JComboBox.JcomboBox показывает только один элемент

Я пробовал, если (o == comboBox2) по-прежнему та же проблема.

@Override 
public void actionPerformed(ActionEvent e) { 
    Object o = e.getSource(); 
    if(o == comboBox1) {    
     Object matricule = comboBox1.getSelectedItem(); 
     String sqll = "Select * FROM clients WHERE matricule = " +matricule;    

      try { 
       rs = stat.executeQuery(sqll); 
       while(rs.next()) { 
        nom.setText(rs.getString("nom")); 
        prenom.setText(rs.getString("prenom")); 
        cin.setText(rs.getString("cin")); 
        adresse.setText(rs.getString("adresse"));     
       } 
      } catch (SQLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 

     comboBox2.removeAllItems(); 

     Object index = comboBox1.getSelectedItem(); 
     String sql = "Select distinct p.code FROM parcelle p, clients c WHERE c.matricule = p.exploitant AND c.matricule = " +index; 

      try { 
       rs = stat.executeQuery(sql); 
       while(rs.next()) { 
        System.out.println(rs.getInt("code")); 
        comboBox2.addItem(rs.getInt("code")); 
       } 
      } catch (SQLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      }   
     return; 
    }  

     Object code = comboBox2.getSelectedItem(); 
     String sqll = "Select * FROM parcelle WHERE code = " +code; 

     try { 
      rs = stat.executeQuery(sqll);      

      while(rs.next()) { 
       sau.setText(rs.getString("sau")); 
       sol.setText(rs.getString("type_sol")); 
       irrigation.setText(rs.getString("mode_irrigation")); 
       exploitation.setText(rs.getString("type_exploitation"));      
      } 

     } catch (SQLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
     }  
} 
+1

В базе данных есть больше, но можете ли вы подтвердить, что ваш запрос возвращает несколько строк? –

+0

Да, я пробовал запрос через phpMyAdmin и возвращал все существующие строки. http://i46.tinypic.com/2uyr6e8.jpg –

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). Жестко кодируйте данные. –

ответ

1

Можете ли вы подтвердить, что значение для «кода» не является нулевым ни в одной из записей? Из звука вещей значение для «кода» в вашей второй записи равно null (или что-либо еще, что не может быть проанализировано как int), вызывающее исключение.

+0

Спасибо за ваш ответ, Нет нулевых значений. –

+0

Как насчет каких-либо буквенно-цифровых значений для «кода»? –

+0

Нет, все значения для 'code' являются int. –