为了账号安全,请及时绑定邮箱和手机立即绑定

JTable 显示所有记录(数据),就在一列中?

JTable 显示所有记录(数据),就在一列中?

扬帆大鱼 2021-11-11 15:53:18
在代码中,JTable 从具有一个表和两列的数据库中检索所有数据。该程序只是一个最小的示例。数据库(Javadb)“SOMETABLE”,表“TESTTABLE”,第一列“DATA1”(字符),第二列“DATA2”(字符)。该程序获取并显示来自命令行的输入和记录。剩下的就在 Gui 上完成了。首先获取 DATA1 和 DATA2 的输入,然后单击保存,然后单击加载显示记录。然后单击 Del,以显示 JTable 上的记录。只需在 GUI 和 CLI 之间切换。但是当我执行程序时,JTable 只在一列中显示所有数据,而不是两列?
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

你的tableView方法毫无意义。为什么要打开两个数据连接,在同一个表上运行两个不同的查询,然后尝试合并它们?


您还冒着泄漏资源(保持数据库连接打开)的风险,从长远来看这不会是健康的。


这个问题的简单答案是,正确使用 SQL。在尽可能少的语句中从您想要的表中查询您想要的列。例如...


public void tableView() throws SQLException, ClassNotFoundException {

    Class.forName("org.apache.derby.jdbc.EmbeddedDriver");


    //Create new table model

    DefaultTableModel tableModel = new DefaultTableModel();


    try (Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/TESTTABLE", "me", "1234")) {

        String sql = "SELECT DATA1, DATA2 FROM ME.SOMETABLE";

        try (PreparedStatement ps = con.prepareStatement(sql)) {

            try (ResultSet rs = ps.executeQuery()) {

                ResultSetMetaData rsmd = rs.getMetaData();

                int columnCount = rsmd.getColumnCount();

                List<String> columnNames = new ArrayList<>(columnCount);

                for (int column = 0; column < columnCount; column++) {

                    columnNames.add(rsmd.getColumnName(column + 1));

                }


                tableModel.setColumnIdentifiers(columnNames.toArray(new Object[columnNames.size()]));


                while (rs.next()) {

                    Object row[] = new Object[columnCount];

                    for (int column = 0; column < columnCount; column++) {

                        row[column] = rs.getObject(column + 1);

                    }

                    tableModel.addRow(row);

                }

            }

        } finally {

            t.setModel(tableModel);

        }

    }

}

还可以查看try-with-resources以更好地管理资源...


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 227 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信