2015-09-27 2 views
0

Так что я пытаюсь получить данные из моей базы данных и помещать их в 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()); 
} 
} 

ответ

1

Ну, вы никогда не измените значения в переменных "flightID", "departdate", и т.д .. Вызов rs.next() не будет обновлять значения.

Итак, внутри цикла вам нужно получить значения из ResultSet. Somethink like:

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

Также вы дважды вызываете rs.next(), чтобы вы пропускали строки данных.

Однако не рекомендуется использовать метод setValueAt(...) для обновления TableModel, потому что вы не знаете заранее, сколько строк есть, так что вы не знаете, насколько велика для создания таблицы. Вместо этого лучше создать строку данных, а затем добавить строку данных в TableModel. Таким образом, модель динамична.

Пример такого подхода можно найти в коде Table From Database Example, найденном в Table From Database.

+0

Это сделало трюк. Огромное спасибо за помощь! Я посмотрю на этот пример таблицы, который вы связали. –