Witam,
mam problem którego nie potrafię rozwiązać a mianowicie chce zrobić tak, że mam pewne dane w tabeli i chce je z edytować. Problem polega na tym, że jak klikam zatwierdź edycję to z każdym kliknięciem dodaje mi jeden dodatkowy zbędny wiersz. I tak kiedy edytuje dane(wiersz) trzeci raz to po kliknieciu zatwierdz edycje dodaje mi 3 wiersze z takimi samymi danymi po czwartym kliknięciu 4 itd. Prosze o porady i wskazówki może ktoś się domyśla dlaczego tak się dzieje.

Proces edycji wygląda mniej więcej tak:
->sprawdzam czy dane uległy zmianie jeśli tak to wcześniejsze dane zmieniają status na archiwalne a nowe są zapisywane

napisałem takie funkcje:
do sprawdzenia czy uległy zmianie

private boolean sprawdzenieZmianFormularzAdres(){
 
        String numDomu = Integer.toString(klient.getNumerDomu());
        //String stat = Integer.toString(klient.getStatus());
 
        if(klient.getPelnaNazwa().equals(super.tfPelnaNazwa.getText())==false){return false;}
   else if(klient.getNipSformatowany().equals(super.tfNipSformatowany.getText())==false){return false;}
   //else if(klient.getNip().equals(tfNip.getText())==false){return false;}
   else if(klient.getMisato().equals(super.tfMiasto.getText())==false){return false;}
   else if(klient.getPoczta().equals(super.tfPoczta.getText())==false){return false;}
   else if(klient.getKodPocztowy().equals(super.tfKodPocztowy.getText())==false){return false;}
   else if(klient.getUlica().equals(super.tfUlica.getText())==false){return false;}
   else if(numDomu.equals(super.tfNumerDomu.getText())==false){return false;}
   else if(klient.getNumerLokalu().equals(super.tfNumerLokalu.getText())==false){return false;}
   //else if(stat.equals(super.tfStatus.getText())==false){return false;}
 
        return true;
    } 

do zmiany statusu starych danych:

 private void updateStatus(){
        int id=oknoGlowne.getWartoscId();
        String zapytanieUpdateStatus = "UPDATE DANE_KLIENTA SET status='1' where id_klienta='"+id+"'and status='0'";
 
        try {
            Statement st = lacznosc.polaczenie.createStatement();
            st.execute(zapytanieUpdateStatus);
 
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

oraz do zapisania danych po edycji:

 private void dodanieZmienionychDanychAdresowych(){
            int id=oknoGlowne.getWartoscId();
            int numDomu=Integer.parseInt(super.tfNumerDomu.getText());
 
            String zapytanieDodaniaPoEdycji="INSERT INTO DANE_KLIENTA(PELNA_NAZWA, SFORMATOWANY_NIP, NIP, MIASTO, POCZTA, KOD_POCZTOWY, ULICA, NUMER_ULICY, NUMER_DOMU, STATUS,ID_KLIENTA) " +
                    "VALUES('"+tfPelnaNazwa.getText()+
                    "','"+tfNipSformatowany.getText()+
                    "','"+niesformatowanyNip(tfNipSformatowany.getText())+
                    "','"+tfMiasto.getText()+
                    "','"+tfPoczta.getText()+
                    "','"+tfKodPocztowy.getText()+
                    "','"+tfUlica.getText()+
                    "','"+numDomu+
                    "','"+tfNumerLokalu.getText()+
                    "','"+0+
                    "','"+id+"')";
            try {
                Statement st = lacznosc.polaczenie.createStatement();
                st.execute(zapytanieDodaniaPoEdycji);
                st.close();
 
            } catch (SQLException wyjatek) {
                System.out.println("Wyjatek dane klienta "+wyjatek);
            }
 
        }

i na koniec:

if(klik.getSource()==buttonOK){
            if((sprawdzenieZmianFormularzaTele()==true) && (sprawdzenieZmianFormularzAdres()==true) ){
                new Komunikat("Nie wprowadzono zadnych zmian");
            }else if(sprawdzenieZmianFormularzaTele()==false){
                updateKlienta();
                oknoGlowne.model.zeruj();
                oknoGlowne.pokazDane();
                setVisible(false);
            }
 
            else if(sprawdzenieZmianFormularzAdres()==false){
                updateStatus();
                dodanieZmienionychDanychAdresowych();
                setVisible(false);
 
            }