2012-03-06 17 views
0

私はデータベースからデータを取得してJTableに表示するJComboBoxを持っています。異なるデータベースのデータが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

Ashwiniの回答のように、行を最初にクリアする必要があります。コーディングを容易にするこのフレームワークを見てください。それはあなたのテーブルの質問に対する答えを持っています。基本的には、DefaultTableModelを使用する代わりにモデルを作成し、追加の機能を追加する必要があります。

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

Swingのオブジェクトのテーブルモデルの使用が記載されてそこに第二の例を見てみましょう。

関連する問題