diff --git a/src/main/java/de/telefonbuch/TelefonbuchController.java b/src/main/java/de/telefonbuch/TelefonbuchController.java index 9a0d1105a122f9efa913c09f9ec4f11dfab0582f..5fb7490783ac2a539df77d0f6462af0dd3e33b13 100644 --- a/src/main/java/de/telefonbuch/TelefonbuchController.java +++ b/src/main/java/de/telefonbuch/TelefonbuchController.java @@ -235,11 +235,15 @@ public class TelefonbuchController { txtTelefon.focusedProperty().addListener((observableValue, aBoolean, t1) -> { /* Prüfen ob das Feld verändert wurde */ if (!t1) { + if(!kontakt.getTelefon().equals("")) { + kontakt.setId(kontakt.getTelefon()); + } /* Wenn die Nummer korrekt ausgefüllt wurde und der Kontakt bereits in der DB enthalten war, den Kontakt löschen und neu anlegen */ if (!txtTelefon.getText().equals("") && txtTelefon.getText() != null && !txtTelefon.getText().equals(kontakt.getTelefon())) { if (App.eintraege.containsKey(txtTelefon.getText())) { fehler.showErrorDialog("error", "", "Es gibt bereits einen Eintrag im Adressbuch mit dieser Telefonnummer. Die Telefonnummer muss eindeutig sein."); } else { + kontakt.setTelefon(txtTelefon.getText()); deleteKontakt(false); saveKontakt(); } @@ -286,14 +290,13 @@ public class TelefonbuchController { } else { App.eintraege.remove(txtTelefon.getText()); } - - } /** * Kontakt in die Treemap speichern */ private void saveKontakt() { + System.out.println(kontakt.toString()); if (!kontakt.getTelefon().equals("")) { App.eintraege.put(kontakt.getTelefon(), kontakt); db.addKontakt(kontakt); diff --git a/src/main/java/de/telefonbuch/model/Datenbank.java b/src/main/java/de/telefonbuch/model/Datenbank.java index 11193ca6d799b8a86e6953adb4b3585b9df48f92..f51e83264bbabeec86cf1a05bad144caacefbf2f 100644 --- a/src/main/java/de/telefonbuch/model/Datenbank.java +++ b/src/main/java/de/telefonbuch/model/Datenbank.java @@ -1,9 +1,6 @@ package de.telefonbuch.model; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.sql.Statement; +import java.sql.*; public class Datenbank { @@ -47,15 +44,40 @@ public class Datenbank { try { Statement stmt = this.con.createStatement(); - String insertKontakt = "INSERT OR REPLACE INTO kontakte (vorname, nachname, strasse, hnr, plz, ort, telefon) VALUES (" + - "\"" + kontakt.getVorname() + "\", " + - "\"" + kontakt.getNachname() + "\", " + - "\"" + kontakt.getStrasse() + "\", " + - "\"" + kontakt.getHausnummer() + "\", " + - "\"" + kontakt.getPlz() + "\", " + - "\"" + kontakt.getOrt() + "\", " + - "\"" + kontakt.getTelefon() + "\" " + - ");"; + String checkKontakt = "SELECT id FROM kontakte WHERE telefon=\"" + kontakt.getId() + "\";"; + ResultSet checkResult = stmt.executeQuery(checkKontakt); + + int rows = 0; + while(checkResult.next()) { + rows++; + } + + System.out.println("Rows: " + rows); + + String insertKontakt; + + if (rows == 1) { + insertKontakt = "UPDATE kontakte SET " + + "vorname=\"" + kontakt.getVorname() + "\", " + + "nachname=\"" + kontakt.getNachname() + "\", " + + "strasse=\"" + kontakt.getStrasse() + "\", " + + "hnr=\"" + kontakt.getHausnummer() + "\", " + + "plz=\"" + kontakt.getPlz() + "\", " + + "ort=\"" + kontakt.getOrt() + "\", " + + "telefon=\"" + kontakt.getTelefon() + "\" " + + " WHERE telefon=" + kontakt.getId() + ";"; + } else { + insertKontakt = "INSERT INTO kontakte (vorname, nachname, strasse, hnr, plz, ort, telefon) VALUES (" + + "\"" + kontakt.getVorname() + "\", " + + "\"" + kontakt.getNachname() + "\", " + + "\"" + kontakt.getStrasse() + "\", " + + "\"" + kontakt.getHausnummer() + "\", " + + "\"" + kontakt.getPlz() + "\", " + + "\"" + kontakt.getOrt() + "\", " + + "\"" + kontakt.getTelefon() + "\" " + + ");"; + } + System.out.println(insertKontakt); System.out.println(stmt.execute(insertKontakt)); } catch (SQLException e) { e.printStackTrace(); diff --git a/src/main/java/de/telefonbuch/model/Kontakt.java b/src/main/java/de/telefonbuch/model/Kontakt.java index 87e0cbc848ab0d155be2130fec746c6e135c6866..2d88a3f52ffb73c41ceba45c2f27f9413e5f3054 100644 --- a/src/main/java/de/telefonbuch/model/Kontakt.java +++ b/src/main/java/de/telefonbuch/model/Kontakt.java @@ -5,7 +5,14 @@ package de.telefonbuch.model; */ public class Kontakt { // region 0 Variables - private String vorname, nachname, strasse, hausnummer, plz, ort, telefon = ""; + private String vorname = ""; + private String nachname = ""; + private String strasse = ""; + private String hausnummer = ""; + private String plz = ""; + private String ort = ""; + private String telefon = ""; + private String id = ""; //endregion // region 1 Setter @@ -181,5 +188,13 @@ public class Kontakt { private boolean isNumeric(String s) { return s != null && s.matches("[-+]?\\d*\\.?\\d+"); } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } //endregion }