[jTable] wyzerowanie tablicy

0

Witam serdecznie,

mam 1 małe pytanko..
Ustawiłam null dla tabeli w której wyświetla mi rekordy z baz danych. Za pomocą przycisku "SELECT" wyświetla super :) . Nie powtarzają się, ale gdy dodam rekordy do tablicy, za pomocą już innego przycisku "INSERT INTO" Po czym naciskam przycisk "SELECT" wyświetli mi podwójnie dane. Pierwsze dane bez nowych rekordów, a drugie już z tym nowymi rekordami . Nie wiem za pomocą jakiej funkcji wyzerować tablice tak, aby wyświetlała jedno zapytanie, a nie jak teraz to robi. Tyle razy ile nacisnę przycisk "SELECT"
Zobrazuje to:
naciskam przycisk "SELECT" wyświetli dane z bazy danych

first name , last name , department name , v_begin ,        v_end
-------------------------------------------------------------------------------------------
kasia          nazwisko1    IT              2010-10-11    2010-10-14

dodam teraz nowy rekord za pomocą innego przycisku "insert to" Po czym naciskam button "SELECT" i mi tak wyświetli

first name , last name , department name , v_begin ,        v_end
-------------------------------------------------------------------------------------------
kasia          nazwisko1    IT               2010-10-11    2010-10-14
kasia          nazwisko1    IT               2010-10-11    2010-10-14
ola            nazwisko2    Programmer       2010-10-10    2010-10-16  // to nowy rekord który dodałam do b. d.

Mój przycisk "select" przedstawia się w ten sposób:

 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:

        String driver = "oracle.jdbc.driver.OracleDriver";
        String serverName = "localhost";
        String portNumber = "1521";
        String sid = "XE";
        String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
        String pass = "kasia";
        String user = "kasia";
        String sql = "select e.first_name, e.last_name, d.name, t.v_begin, t.v_end from time_work t, employess e, departments d where e.id=t.employess_id and d.name=t.departments_name order by t.id";

        try {

            String[] tableColumnsName = {"first name", "last name", "department name", "v_begin", "v_end"};
            DefaultTableModel aModel = (DefaultTableModel) jTable1.getModel();
            aModel.setColumnIdentifiers(tableColumnsName);
            Class.forName(driver);
            Connection con = DriverManager.getConnection(url, user, pass);
            PreparedStatement ps = con.prepareStatement(sql);

            ResultSet rs = ps.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            int colNo = rsmd.getColumnCount();


            jTable1.removeColumn(null);  // tu ustawiłam zerowanie, ale nie działa tak jak powinno :(
            while (rs.next()) {

                Object[] objects = new Object[colNo];

                for (int i = 0; i < colNo; i++) {
                    objects[i] = rs.getObject(i + 1);
                }
                aModel.addRow(objects);

            }


            ps.close();
            con.close();
            jTable1.setModel(aModel);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());

        }



    }

Próbowałam kilka razy. Pisząc tak np:

 jTable1.remove... (null)

chyba wszystkie funkcje wbudowane w Netbeans, które wyświetli jak naciśnie się . (kropkę) po jTable1 . Jednak widać, że nie wszystkie rozwiązania wykonałam, jak nie działa mi nadal. Dlatego proszę uprzejmie o wskazówkę rozwiązania tego problemu..?

0

Wpierw powinnaś usunąć wszystko z modelu (ewentualnie stworzyć model na nowo):

int ile=aModel.getRowCount();
for(int i=ile-1;i>=0;i--)
{
    aModel.remove(i);
}

potem dodać nowe wiersze do modelu i poinformować JTable, że dane się zmieniły:

aModel.fireTableDataChanged();
0

JAK ZWYKLE WSZYSTKO DZIAŁA SUPER!!!!!!!!!!!!!!!

ktoś Wam mówił, że to forum jest super :)

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