Как получить максимальный идентификатор в SQL - PullRequest
0 голосов
/ 09 мая 2018

Создание и отправка PreparedStatement или ResultSet.

занимает слишком много времени

Как я могу получить MaxID из SQL в методе Java?

Написал это, но не работает ...

private static int getLastId()
{   
    int returned=0;

    try
    {
        PreparedStatement stat;
        ResultSet rs;
        String sql="select max(id) from home";
        stat=conn.prepareStatement(sql);
        rs=stat.executeQuery();
        while(rs.next())
        {
            returned = rs.getInt("id")+1;// just want a new id for new person
        }
    }
    catch (Exception e)
    {
        System.out.println(""+e);
    }
    return returned;
}

Я пытался использовать это так ...

                //reseting every thing and get lastId+1;
                System.out.println("added");
                field_name.setText("");
                field_pass.setText("");
                int temp= getLastId();
                field_id.setText(""+temp);

Но он возвращает 0! У меня нет ошибки SQL.

Я использовал это неправильно? или?

Спасибо за помощь.

1 Ответ

0 голосов
/ 09 мая 2018

У вас есть несколько проблем, одна из которых заключается в том, что в вашем текущем коде вы фактически не получаете доступ к max(id), который вы указали в запросе. Одним из способов решения этой проблемы является присвоение псевдонима:

PreparedStatement stat;
ResultSet rs;
String sql = "SELECT MAX(id) AS max_id FROM home";
stat = conn.prepareStatement(sql);
rs = stat.executeQuery();
if (rs.next()) {
    returned = rs.getInt("max_id") + 1;
}

Это исправляет синтаксическую проблему, но все еще остается проблема того, является ли это лучшим способом получить следующую id. Я бы порекомендовал вам переключиться на использование столбца с автоинкрементом, который MySQL будет для вас управлять Тогда вам не нужно беспокоиться о отслеживании последнего значения идентификатора. На самом деле, вам даже не нужно указывать значение при вставке; база данных будет обрабатывать это для вас.

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