java - 如何在 JTable 中显示数据库中的数据而不附加另一个数据库中的其他数据?

标签 java mysql swing

我有一个 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程序的内容。

我将不胜感激任何意见。谢谢!

最佳答案

您正在调用 model.addRow() ,它将向现有数据模型添加新行。它没有在任何地方清除数据模型。因此,这些行将被附加到以前的数据中。您需要将数据模型设置为新的数据模型或先删除现有数据。

关于java - 如何在 JTable 中显示数据库中的数据而不附加另一个数据库中的其他数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577582/

相关文章:

java - FopFactory 缺少方法

mysql - phabricator 在 dockerized php 容器中找不到 dockerized mysql

mysql - 按字母顺序对 MySQL 结果排序,但数字排在最后

java - 将包含 Mysql 表中数据的行添加到 jtable

java - 自定义 JButton 子类 setIcon 方法不起作用

java - 使 JTextPane 中的 JLable 不可删除

java - 最接近于 Java/Scala 的 SQLAlchemy

java - 将 C 或 C++ 常量转换为 Java

java - 如何从元数据中了解列是已签名还是未签名?

mysql - 我如何在mysql中文本搜索多个列并按列排序?