witam
Mam nastepujacy problem:
Modyfikuje baze danych dodajac nowy rekord. Tabele prubuje odswiezyc pobierajac rekordy z bazy danych i tworzac nowy model tabeli. Niestety ten sposob nie dziala i nie mam pojecia dlaczego :/
Okno programu sklada sie z 2 zakladek. Pierwsza sluzy do wprowadzania nowych rekordow do bazy danych, druga do prezentacji zawartosci tabeli. Sluchacz zdarzenia przypisany do obiektu JTabbedPane wykonuje metode aktualizujDane() kiedy uzytkownik zmieni zakladke.
Ponizej fragment kodu zrodlowego:
class PanelPrezentacji extends JPanel{
public PanelPrezentacji( JTabbedPane zakladki){
panel = zakladki;
try{
Connection con = DriverManager.getConnection("jdbc:mysql:///ksiegarnia", "marcin", "marcin");
DatabaseMetaData meta = con.getMetaData();
System.out.println(meta.supportsResultSetType(ResultSet.TYPE_FORWARD_ONLY));
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = stat.executeQuery("SELECT * FROM ksiazka");
model = new ResultSetTableDataBaseModel(rs);
tabela = new JTable(model);
JScrollPane jsp = new JScrollPane(tabela);
add(jsp);
//stat.executeQuery("SELECT * FROM ksiazka");
//stat.close();
//con.close();
}
catch(SQLException e){
}
}
public void aktualizujDane(){
// jesli baza danych nie obsluguje SCROLL_SENSITIVE
try{
Connection con1 = DriverManager.getConnection("jdbc:mysql:///ksiegarnia", "marcin", "marcin");
Statement stat1 = con1.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs1 = stat1.executeQuery("SELECT * FROM ksiazka");
model = new ResultSetTableDataBaseModel(rs1);
tabela = new JTable(model);
System.out.println("odswiezanie");
repaint();
panel.repaint();
}
catch(SQLException e){
}
}
private Connection con;
private Statement stat;
private ResultSet rs;
private ResultSetTableDataBaseModel model;
private JTable tabela;
private JTabbedPane panel;
}
Jak widac prubowalem juz nawet odswiezac panel. Wczesniej staralem sie uzyc metody fireTableDataChanged() niestety bezowocnie dlatego postanowilem po prostu tworzyc nowe obiekty ale tez nie dziala.