我们在做项目开发时很多时候都需要数据库的增删改查,而添加数据后又想得到该项数据在数据库中的主键值,这里有一个非常方便的方法可以在插入数据的同时获得主键值。
public void save(Person p) throws SQLException { String sql = "insert into person (name,pwd,sex,age,email,loves) values(?,?,?,?,?,?)"; Connection conn = DbUtil.getConnection(); PreparedStatement pst = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); pst.setString(1, p.getName()); pst.setString(2, p.getPwd()); pst.setString(3, p.getSex()); pst.setInt(4, p.getAge()); pst.setString(5, p.getEmail()); StringBuffer loves = new StringBuffer(""); //将爱好信息拼成字符串 for(String s:p.getLoves()){ loves.append(s); loves.append(","); } //如果用户没选择爱好,则写入"" if(loves.length()>0){ loves.substring(0, loves.length()-1); pst.setString(6, loves.toString()); }else{ pst.setString(6,""); } pst.executeUpdate(); ResultSet rs = pst.getGeneratedKeys(); rs.next(); int id = rs.getInt(1); p.setId(id); DbUtil.closeConnection(conn); }
conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);就可以用 pst.getGenerateKeys()方法得到主键。