如何在java中将boolean列添加到resultset中,然后将结果添加到jtable中

时间:2015-01-28 04:49:01

标签: java jtable resultset

让我解释一下我想在这里实现的目标 在我的结果集中他们是4列的数据然后我需要手动添加1个列,它应该包含布尔值(false)

 ResultSet res = DbConnect.tabelDb(sql); // get result set 
List expRptColWise = new ArrayList();

for (int i = 1; i <= res.getMetaData().getColumnCount(); i++) {
    expRxptColWise.add(false);
}

attendence.tblA.setModel(DbUtils.resultSetToTableModel(res))

我已尝试在stackoverflow.com中找到此代码  仍然这不会改变我的j表,它只显示4列

2 个答案:

答案 0 :(得分:1)

我怀疑是否可以使用DBUtils.resultSetToTableModel来完成,因为它的实际TableModel实施是未知的,相反,您将不得不弄脏,例如..

try (ResultSet rs = ...) {
    DefaultTableModel model = new DefaultTableModel();
    ResultSetMetaData rsmd = rs.getMetaData();
    for (int col = 0; col < rsmd.getColumnCount(); col++) {
        model.addColumn(rsmd.getColumnName(col + 1));
    }
    model.addColumn("boolean column");

    while (rs.next()) {
        Vector data = new Vector();
        for (int col = 0; col < rsmd.getColumnCount(); col++) {
            data.add(rs.getObject(col + 1));
        }
        data.add(Boolean.FALSE);
        model.addRow(data);
    }

} 

请记住,如果您打开资源,则应将其关闭,有关详细信息,请参阅The try-with-resources Statement

答案 1 :(得分:1)

        DefaultTableModel model = new DefaultTableModel();
        ResultSetMetaData rsmd = rs.getMetaData();
                 for (int col = 0; col < rsmd.getColumnCount(); col++) {
                             model.addColumn(rsmd.getColumnName(col + 1));
                            }
                             model.addColumn("boolean");

                 while (rs.next()) {
                            Vector data = new Vector();
                            for (int col = 0; col < rsmd.getColumnCount(); col++) {//add another Column
                                        data.add(rs.getObject(col + 1));
                                    }
                                             data.add( Boolean.FALSE);
                                             model.addRow(data);
}


        JTable newOne=new JTable(model);


            JFrame f=new JFrame();
                f.add(new JScrollPane( newOne));
             f.pack();
            f.setLocationRelativeTo(null);
         f.setVisible(true);