JDBC( 八) 获取插入记录的主键。

原创 2016年08月31日 15:17:37

在MYSQL中,主键往往是这种自动生成的且是自增的,可以通过jdbc来获取刚刚插入的一条记录的主键,具体做法就是在创建Statement或prepareSatement对象的时候,加上参数 RETURN_GENERATED_KEYS ,使得它能够返回获取插入的主键值。
这里写图片描述

测试:
数据库包含字段user_id,user_name,user_password,user_birth。

public class Test {
    @org.junit.Test
    public void testGetReturnGenerateKey1() {
        // 使用静态SQL来获取插入记录自动生成的键
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            connection = JDBCTools.getConnection();
            String sql = "INSERT INTO user (user_name,user_password,user_birth) VALUES ('BBBBB','BB111','"
                    + new Date(new java.util.Date().getTime()) + "')";
            // 添加RETURN_GENERATE_KEYS参数,让prepareStatement取得自动生成的键
            preparedStatement = connection.prepareStatement(sql, java.sql.Statement.RETURN_GENERATED_KEYS);
            preparedStatement.executeUpdate();
            resultSet = preparedStatement.getGeneratedKeys();
            while (resultSet.next()) {
                System.out.println(resultSet.getObject(1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @org.junit.Test
    public void testGetReturnGenerateKey() {
        // 使用预编译SQL来获取插入记录自动生成的键
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            connection = JDBCTools.getConnection();
            String sql = "INSERT INTO user (user_name,user_password,user_birth) VALUES (?,?,?)";
            // 添加RETURN_GENERATE_KEYS参数,让prepareStatement取得自动生成的键
            preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            preparedStatement.setString(1, "AAAAA");
            preparedStatement.setString(2, "AA111");
            preparedStatement.setDate(3, new Date(new java.util.Date().getTime()));
            preparedStatement.executeUpdate();
            ResultSet resultSet = preparedStatement.getGeneratedKeys();
            while (resultSet.next()) {
                System.out.println(resultSet.getObject(1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这里写图片描述

这里写图片描述

数据库:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

JDBC之获取插入语句返回的主键

该获取主键并不是绝对的,也和具体的数据库实现的驱动有关。 package cn.itcast.jdbc; import java.sql.Connection; import java.sql.Pr...
  • BruceLeeNumberOne
  • BruceLeeNumberOne
  • 2017年07月10日 18:00
  • 534

spring Jdbc自动获取主键。

学习了下springjdbc,感觉挺实用的,相对来说springjdbc 扩展性相当好了 import java.sql.Connection; import java.sql.PreparedSta...
  • hfmbook
  • hfmbook
  • 2014年11月20日 09:28
  • 5062

Mybatis + Mysql插入后获取主键id

使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增id 先看插入的配置文件: 在insert的标签里加两个属性:useGeneratedKeys="true"     ...
  • xiatianlong_xtl
  • xiatianlong_xtl
  • 2016年09月21日 14:25
  • 1392

mybatis如何获取oracle新插入数据记录的主键?

SELECT SEQUENCE_1.NEXTVAL FROM DUAL insert into SFY_HAZARD_ANALYSIS HAZARD_ID, HAZARD...
  • sdzhangshulong
  • sdzhangshulong
  • 2016年02月24日 12:18
  • 2642

JDBC应用程序连接数据库–插入数据并且获得相应自增长值的列(即主键id)

public int saveRegInfo(String salutation, String name, String mobile, String email, String addres...
  • CongBird
  • CongBird
  • 2017年02月07日 15:36
  • 600

JDBC插入数据库获取主键

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import jav...
  • yellowxiaotian
  • yellowxiaotian
  • 2014年03月15日 10:11
  • 381

JDBC Insert语句插入Oracle数据库返回数据主键

表结构:create table test( id varchar2(32) primary key, name varchar2(32) );import java.sql.Conn...
  • itmyhome
  • itmyhome
  • 2014年11月29日 21:25
  • 5727

JdbcTemplate下访问Oracle数据库插入数据时返回序列增长的主键

使用JdbcTemplate取得插入Oracle记录的主键值 使用JdbcTemplate取得插入Oracle记录的主键值 在使用spring的过程中经常遇到获取插入数据的主键值,在使用jdbc...
  • xwnxwn
  • xwnxwn
  • 2016年05月08日 20:10
  • 1397

JDBC 3种获得mysql插入数据的自增字段值的方法

1. Retrieving AUTO_INCREMENT Column Values using Statement.getGeneratedKeys() 2. Retrieving AUTO_INC...
  • kalman2008
  • kalman2008
  • 2015年01月22日 11:20
  • 643

在JDBC一次插入多个表、多条记录

原文链接 在jdbc操作中,通过事务操作,一次可以插入多个表 ,多条记录: public static void insertBatch() {   int count[];   int ...
  • a214919447
  • a214919447
  • 2017年06月09日 16:47
  • 398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDBC( 八) 获取插入记录的主键。
举报原因:
原因补充:

(最多只允许输入30个字)