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

标签 java sql string

我正在 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”意味着如果我像abc/1一样启动数据库中id的第一个值,那么新的id会自动为下一个条目生成递增的值 1 为 abc/2,下一个条目为 abc/3,依此类推,顺序,如下所示:abc/4,...,abc/10

但是当达到 abc/10 时,新生成的 ID 保持不变,即数据库中每个新条目的 abc/10 。 (我使用的是 MS Access 2007,idtext 类型)。数据库中的第一个 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/

相关文章:

php - 将表单中的所有用户值提交到数据库中

sql - 什么样的join是正常join

Java方法在字符串中查找字母集不特定于字母序列?

java - 启动 Intent 找不到 Activity

java - C3P0 和 Java Swing 应用程序

mysql - 是否可以使用mysql编辑联合表中的数据排序?

string - 如何使用 Boost::asio 异步读取 std::string?

python - 如何将用户输入的字符串与列表中单词的字符(单个字母)进行比较?

Java JTable 不可见

java - 如何将 Android View 的原点移至其中心?