首页 > 解决方案 > java - 如何在 SQL 中获取最大 ID

问题描述

我创建和发送PreparedStatement的或ResultSet.

如何在 Java 方法中从 SQL 获取 MaxID?

写了这个,但没有工作...

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 错误。

我用错了吗?或者 ?

感谢帮助。

标签: javamysqlmethods

解决方案


您在这里遇到了一些问题,其中之一是在您当前的代码中,您实际上并没有访问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;
}

这修复了语法问题,但仍然存在这是否是获取 next 的最佳方法的问题id。我建议您切换到使用 MySQL 将为您管理的自动增量列。然后,您无需担心跟踪最新的 ID 值。实际上,插入时甚至不需要指定值;数据库将为您处理此问题。


推荐阅读