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

在代码中,JTable 从具有一个表和两列的数据库中检索所有数据。

该程序只是一个最小的示例。数据库(Javadb)“SOMETABLE”,表“TESTTABLE”,第一列“DATA1”(字符),第二列“DATA2”(字符)。

该程序获取并显示来自命令行的输入和记录。剩下的就在 Gui 上完成了。首先获取 DATA1 和 DATA2 的输入,然后单击保存,然后单击加载显示记录。

然后单击 Del,以显示 JTable 上的记录。只需在 GUI 和 CLI 之间切换。

但是当我执行程序时,JTable 只在一列中显示所有数据,而不是两列?


扬帆大鱼
浏览 228回答 1
1回答

慕容708150

你的tableView方法毫无意义。为什么要打开两个数据连接,在同一个表上运行两个不同的查询,然后尝试合并它们?您还冒着泄漏资源(保持数据库连接打开)的风险,从长远来看这不会是健康的。这个问题的简单答案是,正确使用 SQL。在尽可能少的语句中从您想要的表中查询您想要的列。例如...public void tableView() throws SQLException, ClassNotFoundException {&nbsp; &nbsp; Class.forName("org.apache.derby.jdbc.EmbeddedDriver");&nbsp; &nbsp; //Create new table model&nbsp; &nbsp; DefaultTableModel tableModel = new DefaultTableModel();&nbsp; &nbsp; try (Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/TESTTABLE", "me", "1234")) {&nbsp; &nbsp; &nbsp; &nbsp; String sql = "SELECT DATA1, DATA2 FROM ME.SOMETABLE";&nbsp; &nbsp; &nbsp; &nbsp; try (PreparedStatement ps = con.prepareStatement(sql)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try (ResultSet rs = ps.executeQuery()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ResultSetMetaData rsmd = rs.getMetaData();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int columnCount = rsmd.getColumnCount();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; List<String> columnNames = new ArrayList<>(columnCount);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int column = 0; column < columnCount; column++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; columnNames.add(rsmd.getColumnName(column + 1));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tableModel.setColumnIdentifiers(columnNames.toArray(new Object[columnNames.size()]));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (rs.next()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Object row[] = new Object[columnCount];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int column = 0; column < columnCount; column++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; row[column] = rs.getObject(column + 1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tableModel.addRow(row);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; } finally {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t.setModel(tableModel);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}还可以查看try-with-resources以更好地管理资源...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java