problem z odświeżaniem tabeli

0

Od razu przechodząc do rzeczy,(na początku mam już utworzoną jTable która ma 0 rekordów, i odpowiednią ilość kolumn) mam taki kod:

    DefaultTableModel aModel = (DefaultTableModel) jTable1.getModel();
    ResultSet rs2 = st.executeQuery("SELECT * FROM osoby");
    java.sql.ResultSetMetaData rsmd = rs2.getMetaData();
    int colNo = rsmd.getColumnCount();

    while(rs2.next())
    {
     Object[] objects = new Object[colNo];
     for(int i=0;i<colNo;i++)
     {
        objects[i]=rs2.getObject(i+1);
     }
     aModel.addRow(objects);
    }
    jTable1.setModel(aModel);

wszystko działa ok - wyświetlają mi się dane, jak w bazie, teraz wstawiam sobie rekord do bazy, zatwierdzam, i teraz wypadałoby żeby jTable wyświetliła wszystkie poprzednie rekordy wraz z tym nowym.
Kombinowałem na różne sposoby, przez usuniecie rekrdów z jtable, z modelu, niestety nic nie dziala. Byłbym bardzo wdzięczyny za podanei kodu który odświeży tabelę (mój kod, którego nie wkleję bo jest zbyt naznaczony poprawkami) robi tak, że doddaje do wszystkich rekordów tabeli wszystkie nowe rekordy, a nie tylko ten wstawiony, czyli w efekcie wyswietla- 2x wszystkie rekordy stare, przed wstawwieniem + jeden rekord nowo wstawiony. Czyli nie czyści tabeli przed wstawieniem. Dodam że po zamknięciu aplikacji i uruchomieniu od nowa pokazuje już dobrze tabele razem z tym nowym rekordem.Pozdrawiam i proszę o pomoc.

0

http://java.sun.com/javase/6/docs/api/
Klasa AbstractTableModel, po zmianie danych w modelu metoda fireTableDateChanged() lub jakaś inna fire....

0

dzięki, sprawdzę, chociaż miłoby było znaleźć sposób na default model, czym on różni się od abstract ? to znaczy że jak ustawiam model na jtable, i potem ustawiam go drugi raz to zamiast podmienic akutalny model dopisuje do niego te same rekordy...

0

Co Cię dziwi ???

    DefaultTableModel aModel = (DefaultTableModel) jTable1.getModel(); //tu pobierasz aktualny model czyli dane
    ResultSet rs2 = st.executeQuery("SELECT * FROM osoby");
    java.sql.ResultSetMetaData rsmd = rs2.getMetaData();
    int colNo = rsmd.getColumnCount();

    while(rs2.next())
    {
     Object[] objects = new Object[colNo];
     for(int i=0;i<colNo;i++)
     {
        objects[i]=rs2.getObject(i+1);
     }
     aModel.addRow(objects); //tu dopisujesz nowe dane, to jakim cudem mają zniknąć stare dane ?
    }

Albo usuwaj dane z modelu, albo po każdym zapytaniu konstruuj model na nowo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1