java-如何在sql中获取最大id

syqv5f0l  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(416)

我花了太长时间来创建和发送 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错误。
我用错了吗?或者?
谢谢你的帮助。

643ylb08

643ylb081#

这里有一些问题,其中之一是在当前代码中,您实际上没有访问 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值。实际上,插入时甚至不需要指定值;数据库会帮你处理的。

相关问题