转载: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);

都是可以的

转载于:https://www.cnblogs.com/lyl-cnblogs/p/7743390.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值