Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中生成顺序事务ID_Java_Database_String - Fatal编程技术网

在Java中生成顺序事务ID

在Java中生成顺序事务ID,java,database,string,Java,Database,String,我想为员工生成顺序TrnAction ID以存储在数据库中。。。我写了下面的jsp代码这不是在数据库中插入Tx ID的代码..代码运行良好。。当我使用ORDERBY子句查看最新的事务时..我没有获得预期的事务ID..如何使事务ID唯一、连续,以便使用ORDERBY子句按特定顺序检索它们 <% String url = "jdbc:mysql://localhost:3306/"; String dbName = "ystem"; St

我想为员工生成顺序TrnAction ID以存储在数据库中。。。我写了下面的jsp代码这不是在数据库中插入Tx ID的代码..代码运行良好。。当我使用ORDERBY子句查看最新的事务时..我没有获得预期的事务ID..如何使事务ID唯一、连续,以便使用ORDERBY子句按特定顺序检索它们

  <%
         String url = "jdbc:mysql://localhost:3306/";

        String dbName = "ystem";
        String driver = "com.mysql.jdbc.Driver";
        String userName = "root";
        String password = "";
        try {
            Class.forName(driver).newInstance();
            Connection conn = DriverManager.getConnection(url+dbName,userName,password);
            Statement stat=conn.createStatement();
            ResultSet rs=stat.executeQuery("select count(*) from `employee`");
            int x=0;
            UUID idOne = UUID.randomUUID();
            while(rs.next()) {                    
                x=Integer.parseInt(rs.getString(1))+1;
            }
            out.println(idOne.toString().toUpperCase()+"-"+String.valueOf(x));
                        stat.close(); conn.close();
        }
        catch(Exception x) {
            out.println(x.getMessage());
        }
    %>

撇开这种方法的智慧不谈,将计数附加到UUID并不会给您提供ORDERBY子句可以有意义地排序的东西,因为您正在以RANDOM-2的形式创建一些东西。不能按任何顺序对其排序,因为order by将按从第一个字符开始的词汇对字符串列进行排序

因此,将计数器放在字符串的开头。然后,您将获得order by,它可以进行有意义的排序:

String s = String.valueOf(x) + "-" + idOne.toString().toUpperCase();
尽管您可能希望/需要对String.valueOfx的输出进行零填充,因为否则1000将被排序为2之前。例如,您需要2输出为0002


当然,如果您的Java版本足够旧,您应该使用StringBuilder.append或StringBuffer,而不是字符串连接。

不要使用Scriptlet。您的问题是什么?它与示例代码有什么关系?关闭。我不知道如何在代码中的任何地方添加ORDERBY子句。您还可以解释一下为什么要生成UUID吗?这是你的Tx ID的一部分吗?如果是这样,为什么不只使用它呢?为什么要附加count+1?字符串s=idOne.toString.toUpperCase+-+String.valueOfx;这就是我生成唯一ID的方式…计数+1是为了使stringID连续。。。我不想在上面的代码中添加ORDERBY子句。。。我在命令提示符/Shell中使用ORDERBY子句执行查询,以检查是否获得所需的UIDNo。你根本不想这么做。您希望数据库生成事务ID。他们真的很擅长这一点,而且您甚至还没有发现的整个巨大的并发问题已经完全消除了。