2012-03-06 7 views
0

У меня есть JComboBox, который извлекает данные из базы данных и отображает их в JTable. Все работает хорошо, за исключением того, что данные из разных баз данных объединены в JTable. Вы знаете, как я могу отображать только данные конкретной базы данных? Благодаря!Как отображать данные из базы данных без добавления других данных из другой базы данных в JTable?

Ниже был код, который я использовал.

private void comBoxActionPerformed(java.awt.event.ActionEvent evt) 
    {          
     if (comBox.getSelectedItem() == "Select . . .") { 

     } else if (comBox.getSelectedItem() == "Students") { 
     DefaultTableModel model = (DefaultTableModel) dataTable.getModel(); 
     String sql = "select * from students"; 
     try { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(tests.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     Connection connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/datavisibility","root",""); 
     Statement statmnt = connect.createStatement(); 
     ResultSet rslt = statmnt.executeQuery(sql); 
     while(rslt.next()){ 
      String id = rslt.getString("ID"); 
      String name = rslt.getString("Name"); 
      String surname = rslt.getString("Surname"); 
      String age = rslt.getString("Age"); 
      model.addRow(new Object[]{id,name,surname,age}); 
     } 
    } catch(SQLException e){ 
     e.printStackTrace(); 
    } 
    } else if (comBox.getSelectedItem() == "Teachers"){ 
    DefaultTableModel model = (DefaultTableModel) dataTable.getModel(); 
    String sql = "select * from teachers"; 
    try { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(tests.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     Connection connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/datavisibility","root",""); 
     Statement statmnt = connect.createStatement(); 
     ResultSet rslt = statmnt.executeQuery(sql); 
     while(rslt.next()){ 
      String id = rslt.getString("ID"); 
      String name = rslt.getString("Name"); 
      String surname = rslt.getString("Surname"); 
      String age = rslt.getString("Age"); 
      model.addRow(new Object[]{id,name,surname,age}); 

     } 
    } catch(SQLException e){ 
     e.printStackTrace(); 
    } 
    } else if (comBox.getSelectedItem() == "Directors") { 
    DefaultTableModel model = (DefaultTableModel) dataTable.getModel(); 
    String sql = "select * from directors"; 
    try { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
     } catch (ClassNotFoundException ex) { 
      Logger.getLogger(tests.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     Connection connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/datavisibility","root",""); 
     Statement statmnt = connect.createStatement(); 
     ResultSet rslt = statmnt.executeQuery(sql); 
     while(rslt.next()){ 
      String id = rslt.getString("ID"); 
      String name = rslt.getString("Name"); 
      String surname = rslt.getString("Surname"); 
      String age = rslt.getString("Age"); 
      model.addRow(new Object[]{id,name,surname,age}); 

     } 
    } catch(SQLException e){ 
     e.printStackTrace(); 
    } 
    } 
}         ` 

Это был output программы.

Буду признателен за любые входы. Благодаря!

ответ

1

Вы вызываете model.addRow(), который добавит новые строки в существующую модель данных. Он не очищает модель данных в любом месте. Следовательно, строки добавляются к предыдущим данным. Вам необходимо установить модель данных на новую или сначала удалить существующие данные.

0

Вам придется сначала очистить строки, как в ответе Ашвини. Взгляните на эту структуру, которая упрощает кодирование с использованием swing. У него есть ответ на ваш вопрос в таблице. В основном вы должны создать свою модель вместо использования DefaultTableModel и добавить к ней дополнительные функции.

http://code.google.com/p/swingobjects/

Посмотрите на втором примере в там, который описывает использование модели таблицы качелях Object.

Смежные вопросы