方法一:

String sql = "INSERT INTO users (username,password,email) VALUES (?,?,?);";

PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//传入参数: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

mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

mysql获取刚插入(添加)记录的自动编号id

我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介 ...

mysql插入数据后返回自增ID的方法

mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一是使用la ...

mybatis获取批量插入的主键自增id

一.写一个实体类 public class UserInfo { private long userId; private String userAccount; private String use ...

数据库插入数据返回当前主键ID值方法

当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2. ...

mysql python pymysql模块 获取插入的最后一条数据的自增ID lastrowid()方法

调用游标下的lastrowid 可以获取插入之前的表里id字段存放到哪个自增id cursor.lastrowid mysql> select * from userinfo; +----+-- ...

【java】java获取对象属性类型、属性名称、属性值

java获取对象属性类型.属性名称.属性值 获取属性 修饰符:[在Field[]循环中使用] String modifier = Modifier.toString(fields[i].getModi ...

简单实用SQL脚本Part:查找SQL Server 自增ID值不连续记录

原文:简单实用SQL脚本Part:查找SQL Server 自增ID值不连续记录 在很多的时候,我们会在数据库的表中设置一个字段:ID,这个ID是一个IDENTITY,也就是说这是一个自增ID.当并发 ...

随机推荐

(原)list中null的谨慎使用

今天在刷算法题时,新建了ArrayList变量,发现ArrayList与null结合起来使用时经常出错. 请查看如下几种例子, 1.new一个ArrayList<>类型的数据, impor ...

Date&lpar;&rpar; 及其 如何验证用户输入的日期是合法的

1.var someDate = new Date(Date.parse("May 25, 2004"));   <=>  var someDate = new Dat ...

关于insertBefore

insertBefore,看名字就是在某个元素前插入元素,但是其实它可以再文档任何元素强势插入. insertBefore用法: parent.insertBefore(newChild, refCh ...

springMVC 注解版

...

Null指针

C++ Null 指针 C++ 指针 C++ 指针 在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯.赋为 NULL 值的指针被称为空指针. NULL ...

社交系统ThinkSNS&plus; 发布通知!

社交系统ThinkSNS 最新版本ThinkSNS+将于7月15日正式发布开源版本web+H5,同时发布Android APP和iOS APP.我们将告别内测阶段,正式对外发布. 没错,你们没看错,就 ...

extensions

extensions.blocklist.enabled

为Hexo Next主题添加分享及打赏功能

博客地址:往事亦如风的博客 要想先看打赏和分享功能效果,请移步我的博客 打赏功能 因为next主题自带打赏功能,所以我们只需要在next的主题配置文件中找到如下代码,image文件夹是我在blog/s ...

&lbrack;WPF&rsqb;启动参数

在App.xaml.cs中重写方法OnStartup protected override void OnStartup(StartupEventArgs e) { //e.Args为命令行参数 // ...

eclipse导入spring框架