如何在 jTable 中显示数据库内容?
How to show database contents in 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并不是一个好主意,因为你事先不知道有多少行,所以你不知道创建多大的table。相反,最好创建一行数据,然后将一行数据添加到 TableModel。这样模型是动态的。
此方法的示例可以在 Table From Database 中的 Table From Database Example
代码中找到。
所以我试图从我的数据库中获取数据并将其放入 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并不是一个好主意,因为你事先不知道有多少行,所以你不知道创建多大的table。相反,最好创建一行数据,然后将一行数据添加到 TableModel。这样模型是动态的。
此方法的示例可以在 Table From Database 中的 Table From Database Example
代码中找到。