有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

sql java生成id(字符串和整数的组合)

我正在用NetBeans(java)制作一个应用程序。此应用程序具有字符串和整数的唯一id组合,如abc/111xyz/253,并且当数据库中出现新条目时,整数部分应增加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”意味着,如果我在数据库中启动id的第一个值,如abc/1,则会自动为下一个条目生成新id,增加值为abc/2,下一个条目为abc/3,依此类推,顺序如下:abc/4abc/10

但当它到达abc/10时,新生成的id保持不变,即数据库中每个新条目的abc/10。(我使用的是MS Access 2007,idtext类型)。数据库中的第一个id由应用程序本身创建

如果有人有其他选择来生成id,请告诉我


共 (2) 个答案

  1. # 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. # 2 楼答案

    问题是

    String sql = "SELECT RegNumber FROM Death ORDER BY RegNumber DESC   ";
    

    将按字母降序排序

    "abc/9" > "abc/10"
    

    这就是为什么你的程序总是一次又一次地获取9

    我认为您必须拆分该列进行存储,并将数字部分作为实际数字类型存储在数据库中。这可能不像听起来那么难,你总是可以在两个字段上排序

    String sql = "SELECT RegNumber FROM Death ORDER BY RegString DESC, RegNumber DESC   ";
    

    您还可以考虑在某些情况下使用ReQueNT部分的^ {< CD1>}(AutoPosiing)数据类型(如果RegNumber没有复位,如字符串部分发生更改),以进一步简化插入逻辑。