Witam.
Mam problem z usunięciem wiersza z tabeli JTable. Stworzyłem metodę analogicznie do metody (działającej) InsertData, która umieszcza dane w bazie danych, następnie odświeża zawartość JTable w celu pokzania zmian. Funkcję usuwającą stworzyłem na tej samej zasadzie, ale jednak nie działa. Gdzie leży błąd, lub czego brakuje mi, aby to działało poprawnie.
Funkcja usuwająca rekord z bazy danych: (wyświetla komunikat o powodzeniu, więc domyślam się, że rzeczywiście usuwa rekord z bazy):
void removeData(){
try{
int wiersz = table.getSelectedRow();
System.out.print("Wiersz: "+wiersz);
String remove = "DELETE FROM spinning WHERE id = '"+wiersz+"'";
stmt = conn.createStatement();
stmt.executeUpdate(remove);
stmt.close();
System.out.print("Dane z pozycji nr "+table.getSelectedRow()+" usunięto z tabeli");
}catch (NullPointerException e) {
e.getStackTrace();
}catch (SQLException e){
e.getStackTrace();
}
}
a następnie metoda (działa bez zarzutu dla dodawania rekordów), która jest wywoływana każdorazowo po dodaniu danych lub tak jak w tym przykładzie, ich usunięciu:
public void refreshAll(){
panelTabela.remove(scrollPane);
RybyModel modello = new RybyModel();
tableNew = new JTable(modello);
((RybyModel) tableNew.getModel()).setDane(SelectAllData());
tableNew.setAutoCreateRowSorter(true);
scrollPane = new JScrollPane(tableNew);
panelTabela.add(scrollPane);
container.add(panelTabela, gbc());
validate();
}
Po naciśnieciu guzika, są wywoływane jedna po drugiej:
removeData();
refreshAll();
ps. korzystam z klasy dziedziczącej po AbstractTableModel