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 );

  测试代码:

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

javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
 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学习总结(三十七)——获得MySQL数据库自动生成的主键
    

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

 

JavaWeb学习总结
JavaWeb学习总结
粉丝 - 11441
我在关注他 取消关注
5
0
 

posted on 收藏

评论

#1楼 2016-04-18 15:35  

 

     
 

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);

都是可以的

  测试脚本如下:

1  create table test1
2 (
3      id int primary key auto_increment,
4      name varchar(20)
5 );

  测试代码:

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

javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
 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学习总结(三十七)——获得MySQL数据库自动生成的主键
    

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

 

相关文章: