sql java生成id(字符串和整数的组合)
我正在用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”意味着,如果我在数据库中启动id的第一个值,如abc/1
,则会自动为下一个条目生成新id,增加值为abc/2
,下一个条目为abc/3
,依此类推,顺序如下:abc/4
abc/10
但当它到达abc/10
时,新生成的id保持不变,即数据库中每个新条目的abc/10
。(我使用的是MS Access 2007,id
是text
类型)。数据库中的第一个id由应用程序本身创建
如果有人有其他选择来生成id
,请告诉我
# 1 楼答案
select查询是按desc顺序对条目进行排序,它们是Varchar类型 “按RegNumber DESC从死亡令中选择RegNumber”
这意味着在对其进行排序后,将其值作为 abc/9、abc/8、abc/7、abc/6、abc/5、abc/4、abc/3、abc/2、abc/10、abc/1
这意味着第一个id总是9,这意味着下一个值总是10
# 2 楼答案
问题是
将按字母降序排序
这就是为什么你的程序总是一次又一次地获取9
我认为您必须拆分该列进行存储,并将数字部分作为实际数字类型存储在数据库中。这可能不像听起来那么难,你总是可以在两个字段上排序
您还可以考虑在某些情况下使用ReQueNT部分的^ {< CD1>}(AutoPosiing)数据类型(如果RegNumber没有复位,如字符串部分发生更改),以进一步简化插入逻辑。