Java实现数据新增获取自增ID
有时候因为新增的需求需要获取刚刚新增的数据的自增的主键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());
ps.setString(3,t.getFileName());
ps.setString(4,t.getFileExtension());
ps.setString(5, t.getFileDate());
ps.setBoolean(6, true);
ps.setString(7,t.getFileMD5());
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;
}
【3】总结:
我开始学编程是使用C#,用.net MVC框架开发WEB积累了一下开发经验,现在学习java开发WEB感觉两者之间有很多相同之处,以前只是知道这样写是对的,但是却不能很清楚的理解对在哪里。现在通过一连串的焦虑、烦琐,脑子突然开悟,让我对一些编程思想又进一步的提升