java- generate id(字符串和整数的组合)

时间:2012-07-11 23:11:38

标签: java sql string

我在NetBeans(java)中创建一个应用程序。此应用程序具有字符串和整数(如abc/111xyz/253)的唯一ID组合,并且整数部分应在数据库中发生新条目时增加,即abc/112xyz/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,请告诉我。

2 个答案:

答案 0 :(得分:3)

问题在于

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部分使用SERIAL(自动增量)数据类型(例如,如果不重置RegNumber,例如当字符串部分发生更改时),以进一步简化插入逻辑。

答案 1 :(得分:2)

您的选择查询是按desc顺序对条目进行排序,这些条目是Varchar类型 “SELECT RegNumber FROM Death ORDER BY RegNumber DESC”

这意味着将获取值排序为 abc / 9,abc / 8,abc / 7,abc / 6,abc / 5,abc / 4,abc / 3,abc / 2,abc / 10,abc / 1。

这意味着第一个id总是9,这意味着下一个值总是10。