Java JTable 不显示 MySQL 中的所有行

标签 java swing jdbc jtable defaulttablemodel

我有一个 JTable 问题,即当从 MySQL 表返回超过 1 行时,JTable 仅显示 1 条记录 - (最后一条),但是当我尝试简单的 System.out.print 它显示所有记录。 这是我的代码:

 System.out.println("MySQL Connect Example.");
    Connection conn = null;
    String url = "jdbc:mysql://xxx.xx.xxx.xx:3306/";
    String dbName = "smartcart";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "xxx"; 
    String password = "xxx";
    Statement stmt = null;
    ResultSet rs = null;
        cartID=jTextField1.getText().trim();
        if(cartID.matches("(\\w*)") && !cartID.isEmpty())
        {
           jLabel2.setText("Searching.....");
               try {
                        Class.forName(driver).newInstance();
      conn = DriverManager.getConnection(url+dbName,userName,password);
      System.out.println("Connected to the database");
      stmt = conn.createStatement();
                       String query = "SELECT * FROM user_stock WHERE cartID="+cartID;
                       rs = stmt.executeQuery(query);
                       jInternalFrame1.setVisible(true);
                        while (rs.next()) {
                              jTable1.setModel(new javax.swing.table.DefaultTableModel(
                               new Object [][] {
                                  {rs.getString("id"), rs.getString("product_name"), rs.getString("product_code"), rs.getString("product_quantity"), rs.getString("product_price"), "0"}
                               },
                                new String [] {
                                  "Product No.", "Product Name", "Product Code", "Product Quantity", "Product Price", "Discount"
                                   }
                                ));
                        }
      conn.close();
      System.out.println("Disconnected from database");

                        }
               catch (Exception e) {
                  e.printStackTrace();
                }
        }

最佳答案

您正在为每个返回的行重新创建一个新的 TableModel,而不是为所有行创建一个模型:

String query = "SELECT * FROM user_stock WHERE cartID="+cartID;
rs = stmt.executeQuery(query);
jInternalFrame1.setVisible(true);
javax.swing.table.DefaultTableModel model = new javax.swing.table.DefaultTableModel();
model.setColumnIdentifiers(new String [] {
                              "Product No.", "Product Name", "Product Code", "Product Quantity", "Product Price", "Discount" });
 jTable1.setModel(model);
 while (rs.next()) {
     model.addRow(new Object [] {
               rs.getString("id"), rs.getString("product_name"), rs.getString("product_code"), rs.getString("product_quantity"), rs.getString("product_price"), "0"});       
 }

警告:我没有测试或执行上面的代码,但修复拼写错误或缺少括号应该不难。

现在,您还可以简化生活并直接重复使用 ResulSetTableModel这一切都为您完成。

关于Java JTable 不显示 MySQL 中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090723/

相关文章:

java - 使用 JSON.org 解析器从 HttpClient 请求中解析 JSON

java - Canvas 不随 Java 中的窗口调整大小?

java - 按下按钮时图像更改Java

java - 使用PreparedStatement插入数据的JdbcTemplate更新出现异常

java - MySQL - JDBC - 同时选择和删除

java - 无法在 Android 上验证 rsa 签名

java - 如何为中间图像指定名称或标签?

java - Apache Derby 驱动程序未自动加载

java - 创建这个自定义的、可重用的 View

java - 登录 SwingWorker