javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
转自:http://www.cnblogs.com/xdp-gacl/p/3983922.html
测试脚本如下:
1 create table test1
2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 );
测试代码:
1 package me.gacl.demo;
2
3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import me.gacl.utils.JdbcUtils; 7 8 public class Test { 9 public static void main(String[] args) { 10 Connection conn = null; 11 PreparedStatement st = null; 12 ResultSet rs = null; 13 try{ 14 conn = JdbcUtils.getConnection(); 15 String sql = "insert into test1(name) values(?)"; 16 st = conn.prepareStatement(sql); 17 st.setString(1, "aaa"); 18 st.executeUpdate(); 19 //获取数据库自动生成的主键 20 rs = st.getGeneratedKeys(); 21 if(rs.next()){ 22 System.out.println(rs.getInt(1)); 23 } 24 }catch (Exception e) { 25 e.printStackTrace(); 26 }finally{ 27 JdbcUtils.release(conn, st, rs); 28 } 29 } 30 }
分类:
JavaWeb学习总结
标签:
JavaWeb学习总结
评论
#1楼 2016-04-18 15:35 tossgoon2605
回复引用
#2楼 2016-05-15 14:18 秋风扫落木
|
回复引用
#3楼 2016-11-05 23:47 拉桑
@ 秋风扫落木 引用 按照上面的代码运行,发现抛出sqlException.查看API才知道,需要调用preparedStatement(sql, int autoGeneratedKey)创建的对象才能获取自动生成的主键!这是不是因为mysql的版本问题!??? 是的,我测试过。 我使用mysql-connector-java-5.1.33-bin.jar作为驱动,结果发现必须改成如下语句才能执行
而mysql-connector-java-3.0.10.jar作为驱动,使用
或则使用
都是可以的 |
19 //获取数据库自动生成的主键
20 rs = st.getGeneratedKeys();
21 if(rs.next()){
22 System.out.println(rs.getInt(1));
23 }
为获取最新插入的ID,必须用遍历的手段么?