(转)通过getGeneratedKeys()获取主键
Posted wrkjwl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)通过getGeneratedKeys()获取主键相关的知识,希望对你有一定的参考价值。
通常我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键,这时候通常用getGeneratedKeys()方法获取主键
1. 获得数据库返回的主键
insert into book values(null,‘编程珠玑‘,45);
2. 获得主键的步骤
conn.prepareStatement(sql,autoGeneratedKeys)
autoGeneratedKeys是一个int值 ,1代表返回生成的主键,2代表不返回生成的主键;为了方便记忆,使用 Statement.Statement.RETURN_GENERATED_KEYS,Statement.NO_GENERATED_KEYS
3.获得生成的主键
ResultSet rs=ps.getGeneratedKesy();
rs.next();
int userno= rs.getInt(1);
Statement stmt = null; ResultSet rs = null; try { stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_UPDATABLE); // ... // 省略若干行(如上例般创建demo表) // ... stmt.executeUpdate( "INSERT INTO autoIncTutorial (dataField) " + "values (‘Can I Get the Auto Increment Field?‘)", Statement.RETURN_GENERATED_KEYS); // 向驱动指明需要自动获取generatedKeys! int autoIncKeyFromApi = -1; rs = stmt.getGeneratedKeys(); // 获取自增主键! if (rs.next()) { autoIncKeyFromApi = rs.getInt(1); } else { // throw an exception from here } rs.close(); rs = null; System.out.println("Key returned from getGeneratedKeys():" + autoIncKeyFromApi); } finally { ... }
以上是关于(转)通过getGeneratedKeys()获取主键的主要内容,如果未能解决你的问题,请参考以下文章
获取 mysql(innodb) AUTO_INCREMENT Column、JDBC/getGeneratedKeys()/last_insert_id (in OkPacket) 和 LAST_I
在 MySQL 中使用 statement.getGeneratedKeys() 时是不是可以获得自动生成的值?
如何让 Statement.getGeneratedKeys 工作
getGeneratedKeys() 上的 Grails Hibernate4 升级错误