在Java中生成顺序事务ID
我想为员工生成顺序TrnAction ID以存储在数据库中。。。我写了下面的jsp代码这不是在数据库中插入Tx ID的代码..代码运行良好。。当我使用ORDERBY子句查看最新的事务时..我没有获得预期的事务ID..如何使事务ID唯一、连续,以便使用ORDERBY子句按特定顺序检索它们在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
<%
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。他们真的很擅长这一点,而且您甚至还没有发现的整个巨大的并发问题已经完全消除了。