【问题标题】:How to show database contents in jTable?如何在 jTable 中显示数据库内容?
【发布时间】:2015-09-27 04:01:26
【问题描述】:

所以我试图从我的数据库中获取数据并将其放入 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());
}
}

【问题讨论】:

    标签: java swing jdbc jtable


    【解决方案1】:

    好吧,您永远不会更改变量“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 中的Table From Database Example 代码中找到这种方法的示例。

    【讨论】:

    • 成功了。非常感谢你的帮助!我会看看你链接的那个表格示例。
    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多