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);
			
				
			}