Java mysql新增数据 获取 自增ID

java | 2019-11-18 16:36:27

需要获取刚刚新增的数据的自增的主键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;

}

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号