Hi, ich habe eine JTable die von einer Postgres Datenbank ihre Inhalte bezieht. Unterhalb der JTable befindet sich ein JButton, der bei Aktivierung die geänderten Daten an Datenbank sendet.
Aktuell habe ich es so implementiert:
Bei Klick auf den "Update"-Button wird durch eine for-Schleife iteriert, die von der ersten Zeile bis zur letzten ein PreparedStatement ausführt.
Also in etwa so:
Das Ganze funktioniert auch soweit allerdings ist das nicht wirklich performant. Wie könnte man das besser lösen?
Wie wäre es mit einem ChangeListener (keine Ahnung wie der genau für jtables heißt), der Änderungen registriert und dann einfach die TableRow in ein Array schreibt. Bei klick auf update wird dann nur bei diesen Datensätzen ein Update angestoßen.
Hoffe ihr könnt mir da bisl helfen
Aktuell habe ich es so implementiert:
Bei Klick auf den "Update"-Button wird durch eine for-Schleife iteriert, die von der ersten Zeile bis zur letzten ein PreparedStatement ausführt.
Also in etwa so:
Java:
PreparedStatement pst = conn.prepareStatement("update tablename set col1=?, col2=2 where col=?");
for (int i = 0; i < jTable1.getRowCount(); i++) {
ps.setInt(1, (int)jTable1.getValueAt(i, 0));
ps.setInt(2, (int)jTable1.getValueAt(i, 1));
ps.setString(3, jTable1.getValueAt(i, 2).toString());
ps.setString(4, jTable1.getValueAt(i, 3).toString());
ps.setString(5, jTable1.getValueAt(i, 4).toString());
ps.setString(6, jTable1.getValueAt(i, 5).toString());
ps.setInt(7, (i+1));
ps.executeUpdate();
}
conn.close();
Das Ganze funktioniert auch soweit allerdings ist das nicht wirklich performant. Wie könnte man das besser lösen?
Wie wäre es mit einem ChangeListener (keine Ahnung wie der genau für jtables heißt), der Änderungen registriert und dann einfach die TableRow in ein Array schreibt. Bei klick auf update wird dann nur bei diesen Datensätzen ein Update angestoßen.
Hoffe ihr könnt mir da bisl helfen