java - 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 错误。
我用错了吗?或者 ?
感谢帮助。
解决方案
您在这里遇到了一些问题,其中之一是在您当前的代码中,您实际上并没有访问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 值。实际上,插入时甚至不需要指定值;数据库将为您处理此问题。
推荐阅读
- vuetify.js - Nuxt/Vuetify variables.scss 未编译
- javascript - Javascript THREEJS 和 GC
- c# - 如何从 C# MVC5 控制器中没有 headerID 的 Razor 页面使用 JSON 对象
- office-js - Office Javascript API:MS Project 查找修改任务的 guid
- ios - Having trouble integrating multiple pickerviews in the same view
- r - 如何从R中的coxph模型摘要中提取公式?
- java - SecureRandom.nextBytes() 是为 SecureRandom 实例设置初始种子的唯一方法吗?
- kubernetes - 获取 pod 处于挂起状态的平均时间
- ios - 如何在 UITableViewCell 中实现动态大小的 UICollectionView?
- anylogic - 无法销毁资源池单元