java获得刚刚更新的记录集的id(主键)

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:44:20
java中执行pstm.executeUpdate()数据库(SQLServer)操作后,插入了一条数据,我想获得该条记录自动编号列的id号。有没有特定的方法,返回此新加的记录的id号????

在你执行插入语句后,随后执行这个查询:

ResultSet rs=st.executeQuery("SELECT @@IDENTITY AS currentID")
if(rs.next()){
System.out.println(rs.getLong("currentID")); //返回id
}

这是sqlsever的例子
String psql="insert into article (pid,rootid,title,cont,pdate,isleaf) "+
"values ( 0, ?, ?, ?, getdate(), 0)";//pid为自动增长
PreparedStatement psta=conn.prepareStatemen(psql,Statement.RETURN_GENERATED_KEYS);
psta.setInt(1,-1);
psta.setString(2,title);
psta.setString(3,cont);
psta.executeUpdate();
Statement stat=conn.createStatement();
ResultSet rs=psta.getGeneratedKeys();
rs.next();
int id=rs.getInt(1);//取得pid

SELECT @@IDENTITY AS currentID

此问题经常碰到,
方法一:插入后执行SELECT @@IDENTITY AS currentID
但要考虑并发的问题。
方法二:
先建个自增序列,获得要插入的id,插入并获得这个id,这样不会出现并发问题