Ich erstelle Paketmaschine Programm. Jedes Paket hat eine eindeutige Paket-ID, die in eine MySQL-Datenbank exportiert wird. Das Problem ist, dass jedes Mal, wenn ich das Programm starte, das Programm FlurID von 0 zählt. Ich suche nach einer Lösung, die es mir erlaubt, die letzte FlurstückID in der Datenbank zu überprüfen und Zeile nach der letzten zu erstellen.INSERT INTO eindeutiges Feld
Jetzt sieht es so aus: 1. Ich erstelle eine neue Zeile in db (erfolgreich) von Java-Programm. 2. Ich schließe das Programm nach einiger Zeit. 3. Ich führe das Programm erneut aus und kann keine weitere neue Zeile hinzufügen, weil der Fehler "Eintrag '1' für den Schlüssel 'PRIMARY'" doppelt vorhanden ist.
public static void post() throws Exception{
int parcelID = Parcel.generateID();
int clientMPNumber = Parcel.typeClientNumber();
int orderPassword = Parcel.generatePass();
try{
Connection con = getConnection();
PreparedStatement posted = con.prepareStatement("INSERT INTO Parcels.Orders (parcelID, clientMPNumber, orderPassword) VALUES ('"+parcelID+"', '"+clientMPNumber+"', '"+orderPassword+"')");
posted.executeUpdate();
}
catch(Exception e){
System.out.println(e);
}
finally{
System.out.println("Insert completed");
}
}
und die Methode ist:
public static int generateID(){
parcelID = parcelID + 1;
return parcelID;
}
Btw .: Verwenden Sie 'prepareStatement()' und string concat nicht die Werte in Ihrer Abfrage trotzdem. Verwenden Sie 'prepareStatement()', um die "vorbereitete Anweisung" zu erstellen (das ist eine Abfrage mit "?" Als Platzhalter für Ihre Werte) und verwenden Sie 'setInt' und' setString', um diese Platzhalter zu füllen. – Progman