我的程序有一个自动递增的 ID,格式为 ITM001, ITM002...
。但在 ITM009、ITM0010
之后,序列被打断并返回到 ITM001
。因此,我将 ITM0010
作为下一个项目 ID 而不是 ITM0011
。请帮助我了解我应该如何编写查询以继续序列。
ITM001 **ITM0010** ITM002 ITM003 ITM004 ITM005 ITM006 ITM007 ITM008 ITM009
Connection conn = DBConnection.conn();
String sql = "select itemId from ItemMain";
ResultSet res = DBHandller.getData(sql, conn);
if (res.last()) {
String lastid = res.getString("itemId");
return lastid;
}
return null;
/////////////////////////////////////////////////////////////////////////////
String itemID = ItemController.getItemID();
String[] split = itemID.split("ITM",0);
int num = Integer.parseInt(split[1]);
itemID = "ITM00"+ (num+1);
txtitemID.setText(itemID);
最佳答案
问题是您在 0 上使用 split
,并且在您递增后字符串中有几个 0,例如:
String[] split = itemID.split("ITM",0);
int num = Integer.parseInt(split[1]);
String second = "ITM00" + (num + 1);
System.out.println(second);
System.out.println(Arrays.toString(second.split("0")));
这将输出:
[ITM, , 1]
由于最后的0也会被拆分。
类似于:
String itemID = "ITM009";
int num = Integer.parseInt(itemID.substring(itemID.indexOf("0")));
String second = "ITM0" + String.format("%02d", num + 1);
System.out.println(second);
可能会给你你想要的,但你需要弄清楚你希望你的 key 有多少位数并相应地进行调整。
关于java - 自动递增 ID 打破序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745853/