String sql = "INSERT INTO users (username,password,email) VALUES (?,?,?);" //传入参数:Statement.RETURN_GENERATED_KEYS PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, user.getUsername()); pstmt.setString(2, user.getPassword()); pstmt.setString(3, user.getEmail()); pstmt.executeUpdate(); //执行sql int autoInckey = -1; ResultSet rs = pstmt.getGeneratedKeys(); //获取结果 if (rs.next()) { autoIncKey = rs.getInt(1);//取得ID } else { // throw an exception from here } SELECT MAX(id) FROM table
该方法在多线程等情况下可能会造成不正确。
SELECT LAST_INSERT_ID()
或者
SELECT @@INDENTITY
这两个都是单个连接的,不存在所谓的两个人都同时插入,分不清的问题唯一的问题是,如 果一句 INSERT 插入多条,返回的是第一个ID