美文网首页
插入数据并获取自增ID

插入数据并获取自增ID

作者: 小颖啊 | 来源:发表于2017-04-14 15:40 被阅读0次

方法一:SQL语句

INSERT INTO tableName (name) VALUES ('hahah');SELECT@@Identity;

方法二:SQL语句

select max(id) from tableName

方法三:SQL语句

SELECT LAST_INSERT_ID() 函数
注:LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。

在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的 Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update 操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录, LAST_INSERT_ID返回一个列表。

方法二:JDBC

public static Connection getConn() {
        try {
            Class.forName(name);//指定连接类型
            conn = DriverManager.getConnection(url, user, password);//获取连接
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
 public static void main(String[] args) {
        try {
            conn = getConn();
            System.out.println(conn);
            String sql = "INSERT INTO fetch_id (name) VALUES ('hahah')";
            pst = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            pst.executeUpdate();
            res = pst.getGeneratedKeys();
            while (res.next()) {
                System.out.println(res.getLong(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if (res != null) res.close();
                if (pst != null) pst.close();
                if (conn != null) conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

相关文章

网友评论

      本文标题:插入数据并获取自增ID

      本文链接:https://www.haomeiwen.com/subject/cvnwattx.html