Java获取最后插入MySQL记录的自增ID值的3种方法
程序员文章站
2023-12-19 15:29:16
方法一:
复制代码 代码如下:string sql = "insert into users (username,password,email) values (?,?,...
方法一:
复制代码 代码如下:
string sql = "insert into users (username,password,email) values (?,?,?);";
preparedstatement pstmt = (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 int autoinckey = -1;
resultset rs = pstmt.getgeneratedkeys(); //获取结果
if (rs.next()) {
autoinckey = rs.getint(1);//取得id
} else {
// throw an exception from here
}
方法二:
复制代码 代码如下:
select max(id) from table
该方法在多线程等情况下可能会造成不正确。
方法三:
复制代码 代码如下:
select last_insert_id() 或者 select @@indentity
这两个都是单个连接的,不存在所谓的两个人都同时插入,分不清的问题
唯一的问题是,如果一句insert插入多条,返回的是第一个id