我正在创建包裹机程序。每个包都有唯一的parcelID,该parcelID导出到mysql db。问题是每次我运行程序时,程序都从0开始计算parcelID。我正在寻找一个解决方案,它将允许我检查数据库中的最后一个parcelID并在最后一个parcelID之后创建行。
现在看起来是这样:1。我正在用java程序在db中创建一个新行(成功)。2。一段时间后我要关闭程序。三。我再次运行程序,无法添加另一个新行,因为出现错误“键“PRIMARY”的重复条目“1”。

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

方法是:
public static int generateID(){
     parcelID = parcelID + 1;
     return parcelID;
 }

最佳答案

我会让数据库为您做繁重的工作-只需将parcelID列定义为serial,而不是试图自己设置它的值。

09-26 04:06