我正在 NetBeans (java) 中制作一个应用程序。该应用程序具有字符串和整数的唯一 ID 组合,例如 abc/111
或 xyz/253
,当数据库中出现新条目时,整数部分应增加,即 abc/112
和xyz/254
。
问题是整数部分的值会以适当的方式增加,直到达到 10,但此后它不会增加,并且对于数据库中的其他条目保持不变。
我使用了以下代码 -
try{
String sql = "SELECT RegNumber FROM Death ORDER BY RegNumber DESC ";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
if (rs.next()) {
String add1 = rs.getString("RegNumber");
String[] parts= add1.split("/");
String part1= parts[0];
String part2= parts[1];
int a,b;
a= Integer.parseInt(part2);
b=a+1;
jTextField20.setText(""+part1+"/"+b);
JOptionPane.showMessageDialog(null, "done");
}
}
“整数部分增加到10”意味着如果我像abc/1
一样启动数据库中id的第一个值,那么新的id会自动为下一个条目生成递增的值 1 为 abc/2
,下一个条目为 abc/3
,依此类推,顺序,如下所示:abc/4
,...,abc/10
但是当达到 abc/10
时,新生成的 ID 保持不变,即数据库中每个新条目的 abc/10
。 (我使用的是 MS Access 2007,id
是 text
类型)。数据库中的第一个 id 由应用程序本身创建。
如果有人有其他替代方法来生成 id
,请告诉我。
最佳答案
问题是
String sql = "SELECT RegNumber FROM Death ORDER BY RegNumber DESC ";
将按字母降序排序,并按字母顺序排列
"abc/9" > "abc/10"
这就是为什么你的程序总是一次又一次地获取 9...
我认为您必须拆分该列进行存储,并将数字部分作为实际数字类型存储在数据库中。这可能并不像听起来那么难,您始终可以对 2 个字段进行排序
String sql = "SELECT RegNumber FROM Death ORDER BY RegString DESC, RegNumber DESC ";
在某些情况下(即,如果 RegNumber 未重置,例如当字符串部分更改时),您还可以考虑对 RegNumber 部分使用 SERIAL
(自动增量)数据类型,以进一步简化插入逻辑。
关于java-生成id(字符串和整数的组合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11442884/