Как отобразить данные из базы данных без добавления других данных из другой базы данных в JTable? - PullRequest
0 голосов
/ 06 марта 2012

У меня есть 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();
    }
    }
}                                 `

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

Я буду признателен за любые входные данные.Спасибо!

Ответы [ 2 ]

1 голос
/ 06 марта 2012

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

0 голосов
/ 06 марта 2012

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

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

Посмотрите на второй пример, который описывает использование табличной модели объекта Swing.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...