转载:javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键

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 }
复制代码

 

好文要顶 已关注 收藏该文
5
0
 
« 上一篇:javaweb学习总结(三十六)——使用JDBC进行批处理
» 下一篇:javaweb学习总结(三十八)——事务

posted on 2014-10-18 11:04 孤傲苍狼 阅读(10783) 评论(4) 编辑 收藏

评论

#1楼 2016-04-18 15:35 tossgoon2605  

 

     
 

19 //获取数据库自动生成的主键
20 rs = st.getGeneratedKeys();
21 if(rs.next()){
22 System.out.println(rs.getInt(1));
23 }

为获取最新插入的ID,必须用遍历的手段么?

 
     

  回复引用

#2楼 2016-05-15 14:18 秋风扫落木  

 

     
 

按照上面的代码运行,发现抛出sqlException.
查看API才知道,需要调用preparedStatement(sql, int autoGeneratedKey)创建的对象才能获取自动生成的主键!
这是不是因为mysql的版本问题!???

 
     

  回复引用

#3楼 2016-11-05 23:47 拉桑  

 

     
 

@ 秋风扫落木

引用 按照上面的代码运行,发现抛出sqlException.查看API才知道,需要调用preparedStatement(sql, int autoGeneratedKey)创建的对象才能获取自动生成的主键!
这是不是因为mysql的版本问题!???

是的,我测试过。
我使用mysql-connector-java-5.1.33-bin.jar作为驱动,结果发现必须改成如下语句才能执行
1
st = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

而mysql-connector-java-3.0.10.jar作为驱动,使用
1
st = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

或则使用
1
st = conn.prepareStatement(sql);

都是可以的
posted on 2017-10-27 15:08  眼低手高  阅读(100)  评论(0编辑  收藏  举报