java - 如何在jTable中显示数据库内容?

标签 java swing jdbc jtable

所以我试图从数据库中获取数据并将其放入 jTable 中。它工作正常,因为它显示了第一组结果,但随后它只是不断重复相同的记录。有人知道有什么问题吗?提前致谢!

void Flight(){
try{

    int x = 0;
    while (rs.next()){
    jTable1.setValueAt(flightID, x, 0);
    jTable1.setValueAt(departdate, x, 1);
    jTable1.setValueAt(departtime, x, 2);
    jTable1.setValueAt(destination, x, 3);
    jTable1.setValueAt(arrivdate, x, 4);
    jTable1.setValueAt(arrivtime, x, 5);

    x++;
    rs.next();
    }
}
catch(SQLException err) {
    JOptionPane.showMessageDialog(AdminWindow.this, err.getMessage());
}
}

最佳答案

好吧,您永远不会更改变量“flightID”、“departdate”等中的值。调用 rs.next() 不会更新这些值。

因此在循环内您需要从 ResultSet 中获取值。有些人认为:

//jTable1.setValueAt(flightID, x, 0);
jTable1.setValueAt(rs.getObject(1), x, 0);

此外,您还调用 rs.next() 两次,因此您将跳过数据行。

但是,使用 setValueAt(...) 方法更新 TableModel 并不是一个好主意,因为您事先不知道有多少行,所以您不知道知道创建表有多大。相反,最好创建一行数据,然后将一行数据添加到 TableModel。这样模型就是动态的。

此方法的示例可以在 Table From Database 中的来自数据库的表示例代码中找到。 .

关于java - 如何在jTable中显示数据库内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32804448/

相关文章:

java - 为什么我的 JPanel 比应有的小?

Java Hive 连接executeUpdate() 始终返回计数为零

java - 如何使用 JDBC 从 ResultSet 中只获取 5 行?

java - Springdoc 指定安全性为开放

java - java swing SQLite删除特定行

java - 带有 Swing 的 JRuby : "The OSX menu"

java - 使用 Google Cloud SQL 进行 Spring 启动

java - 请求用户输入的类方法

java - pkcs11 sso(使用之前的 windows 登录和智能卡)

java - Google Calendar V3 API 通过 java 客户端推送通知