创建和发送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错误。
我使用它错吗? 还是?
感谢您的帮助。
答案 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值。实际上,插入时甚至不需要指定值;数据库将为您处理。