【问题标题】:How to dynamically add a column to a jTable and populate it with values from a database如何动态地将列添加到 jTable 并使用数据库中的值填充它
【发布时间】:2015-08-18 13:30:07
【问题描述】:

我正在尝试将查询中的值添加到我动态创建的 jTable 列中。我在下面编写的代码使用单个值填充列。

    TableColumn c = new TableColumn();
   c.setHeaderValue("Test");
   ((DefaultTableModel) jTable2.getModel()).addColumn(c);
    String sql = "select COUNT(COURSEBOOKED) as count from APP.BOOKCOURSE where COURSEBOOKED =?";
    try(Connection con = DriverManager.getConnection("jdbc:derby:MTD","herbert","elsie1*#");
            PreparedStatement pst = con.prepareStatement(sql);){
                 for(int row = 0; row < jTable2.getRowCount(); row++){
                        DefaultTableModel model = (DefaultTableModel)jTable2.getModel();
                        String selected = model.getValueAt(row, 1).toString();
                        pst.setString(1, selected);
                        try(ResultSet rs = pst.executeQuery();){
                            for(int col = 0; col<jTable2.getRowCount(); col++){
                                     if(rs.next()){
                                      Sum = rs.getString("count");
                              jTable2.setValueAt(Sum, col, 12);   
                              System.out.println(Sum);
                                    }
                                 }
                        }
                    }
                }

    catch(SQLException e){
        JOptionPane.showMessageDialog(this, e);
    }

我需要添加到表格中的输出应该是:

0 0 0 2 0 1 0

但我实际上得到了:

0

这意味着添加到列的值是结果查询的第一个值。但是我从打印到控制台得到的结果是

0 0 0 2 0 1 0

我该如何解决我的这个困境?

【问题讨论】:

  • 变量名不应以大写字符开头。你的大多数名字都是正确的,但“总和”不是。保持一致!!!

标签: java swing jdbc jtable


【解决方案1】:

您只添加最后一个元素,因为您遍历 while 循环并获取最后一个元素并设置该值。

for(int col = 0; col<jTable2.getRowCount(); col++){
   if(rs.next())
      jTable2.setValueAt(rs.getString("count"), col, 12);
}

【讨论】:

  • 我这样做了,现在我添加的列的第一行是唯一被填充的列。请检查上面的编辑代码
  • @Herb21 如果不使用则使用
  • 只有第一行被填充,结果相同,没有区别
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多