java - 如何在SQL中获取最大ID

时间:2018-05-09 10:59:18

标签: java mysql methods

创建和发送PreparedStatementResultSet对我来说太长了。

如何在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错误。

我使用它错吗? 还是?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这里有一些问题,其中一个问题是,在您当前的代码中,您实际上并未访问放入查询中的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将为您管理。然后,您无需担心跟踪最新的ID值。实际上,插入时甚至不需要指定值;数据库将为您处理。