Java获取最后插入MySQL记录的自增ID值的3种方法
方法一:
Stringsql="INSERTINTOusers(username,password,email)VALUES(?,?,?);";
PreparedStatementpstmt=(PreparedStatement)conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//传入参数:Statement.RETURN_GENERATED_KEYS
pstmt.setString(1,user.getUsername());
pstmt.setString(2,user.getPassword());
pstmt.setString(3,user.getEmail());
pstmt.executeUpdate();//执行sql intautoInckey=-1;
ResultSetrs=pstmt.getGeneratedKeys();//获取结果
if(rs.next()){
autoIncKey=rs.getInt(1);//取得ID
}else{
//throwanexceptionfromhere
}
方法二:
SELECTMAX(id)FROMtable
该方法在多线程等情况下可能会造成不正确。
方法三:
这两个都是单个连接的,不存在所谓的两个人都同时插入,分不清的问题
SELECTLAST_INSERT_ID()或者SELECT@@INDENTITY
唯一的问题是,如果一句INSERT插入多条,返回的是第一个ID相关文章