我花了太长时间来创建和发送 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错误。
我用错了吗?或者?
谢谢你的帮助。
1条答案
按热度按时间643ylb081#
这里有一些问题,其中之一是在当前代码中,您实际上没有访问
max(id)
你在查询中输入的。解决此问题的一种方法是指定别名:这解决了语法问题,但仍然存在这样一个问题:这是否是获取下一个语法的最佳方法
id
. 我建议您切换到使用自动增量列,mysql将为您管理该列。这样,就不必担心跟踪最新的id值。实际上,插入时甚至不需要指定值;数据库会帮你处理的。