Генерация идентификаторов последовательных транзакций в Java - PullRequest
0 голосов
/ 25 марта 2012

Я хочу сгенерировать идентификаторы последовательных транзакций для сотрудников, которые будут храниться в базе данных ... Я написал приведенный ниже код jsp (это не код для вставки идентификатора Tx в базу данных) .. Код работает нормально .. Когдая использую заказ по предложению, чтобы увидеть последнюю транзакцию .. я не получаю ожидаемый идентификатор перехода ... Как я могу сделать идентификатор транзакции уникальным, последовательным, чтобы я мог получить их в определенной последовательности, используя предложение Order By?

  <%
         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());
        }
    %>

1 Ответ

0 голосов
/ 25 марта 2012

Оставляя в стороне мудрость этого подхода, добавление счетчика к UUID не даст вам чего-то, что будет осмысленно упорядочено предложением order by, потому что вы создаете что-то в форме RANDOMSTUFF-2.Это нельзя упорядочить ни в какой последовательности, потому что order by будет сортировать строковый столбец, лексически начиная с первого символа.

Поэтому вместо этого поместите счетчик в начало вашей строки.Тогда у вас будет что-то, что order by может многозначительно отсортировать:

String s = String.valueOf(x) + "-" + idOne.toString().toUpperCase();

(Хотя вы, вероятно, захотите / должны обнулять вывод String.valueOf(x), потому что в противном случае "1000" будет отсортирован побыть до "2". Так что вам нужно "2" для вывода как, например, "0002".

(и, конечно, вы должны использовать StringBuilder.append() (или StringBuffer, если ваша версия Javaдостаточно стар), а не конкатенация строк).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...