我试图从数据库中获取数据并将它们显示为Java中的JTable。 现在我有一个工作代码可以检索数据并将其显示在表中但不知何故它不会显示第一列。有人有想法吗? 这是我的代码:
stmt = con.createStatement();
rs = stmt.executeQuery(Query);
while (table.getRowCount() > 0) {
((DefaultTableModel) table.getModel()).removeRow(0);
}
int columns = rs.getMetaData().getColumnCount();
while (rs.next()) {
Object[] row = new Object[columns];
for (int i = 1; i <= columns; i++) {
row[i-1] = rs.getObject(i);
}
((DefaultTableModel) table.getModel()).insertRow(rs.getRow() - 1, row);
}
rs.close();
stmt.close();
con.close();
更新
好的,我尝试使用Vector,它发生了同样的事情。我的数据库包含以下列:ID,Subject,AS1,AS2 现在我确实得到了JTable中显示的数据,但我的行数据的顺序总是先从Subject列开始,然后是AS1,然后是AS2和最后一个ID。 为什么会这样?
答案 0 :(得分:0)
通过创建另一个Object []并将第一个数组中的最后一个对象分配给第二个数组的第一个,我找到了解决方法。
while (rs.next()) {
Object[] row = new Object[columns];
for (int i = 1; i <= columns; i++) {
row[i-1] = rs.getObject(i);
}
Object sub = row[0];
Object ses = row[1];
Object as1 = row[2];
Object as2 = row[3];
Object as3 = row[4];
Object fe = row[5];
Object id = row[6];
Object[] row2 = new Object[columns];
row2[0] = id;
row2[1] = sub;
row2[2] = ses;
row2[3] = as1;
row2[4] = as2;
row2[5] = as3;
row2[6] = fe;
((DefaultTableModel) table.getModel()).insertRow(rs.getRow() - 1, row2);
}
不漂亮,但它完成了工作。