需要获取刚刚新增的数据的自增的主键ID,可以使用使用 PreparedStatement.RETURN_GENERATED_KEYS (关键看你使用哪个接口与数据库交互,都有RETURN_GENERATED_KEYS这个方法)可以获取刚刚插入自增ID值。
【1】例如:
ps=con.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
ResultSet rs = ps.getGeneratedKeys();
//获取刚刚新增数据的自增的主键ID
if(rs.next()){
int ID= rs.getInt(1);
}
【2】案例:
private Connection con=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
public int insert(UserSpace t) {
int flag=0;
String insert="INSERT INTO r_userspace(userID,fileUrl,fileName,fileExtension,fileDate,isRecord,fileMD5) " +
"VALUES (?,?,?,?,?,?,?);";
try {
con=JDBCUtil.getConnection();
ps=con.prepareStatement(insert,PreparedStatement.RETURN_GENERATED_KEYS);
ps.setInt(1,t.getUserID());
ps.setString(2,t.getFileUrl());
flag=ps.executeUpdate();
if(flag==1){
FileRecord fr=new FileRecord();
fr.setRecordDate(DateUtil.toStrDate(new Date()));
fr.setRecordTypeID(1);
fr.setUserID(t.getUserID());
//获取刚刚新增数据的自增的主键ID
ResultSet rs = ps.getGeneratedKeys();
if(rs.next()){
int userSpaceID = rs.getInt(1);
fr.setUserSpaceID(userSpaceID);
}
//执行另外的新增语句
ifrd.insert(fr);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
JDBCUtil.close(con, ps, rs);
}
return flag;
}