JDBC--(9)获取自动生成的主键

JDBC 获取自动生成的主键

在我们设置设计表时,会设置主键,自动增长的主键
有时候我们插入数据时,要想知道我们生成的主键是多少

需求场景

  1. 用户注册时,添加用户名,密码后,插入到数据库当中
  2. 跳转成完善个人信息页
    1. 完善信息更新到刚插入的那个记录当中,所以要获取刚插入的那个主键是多少
    2. 不能使用用户名来做条件,用户名有重名情况
    3. 所以插入完后,就应该获取刚插入的那个主键

示例图
在这里插入图片描述

传统方法Statement,执行语句时传入参数Statement.RETURN_GENERATED_KEYS

package com.iris.jdbc.test;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.iris.jdbc.util.JDBCUtil;

public class GenerateTest {
	public static void main(String[] args) throws Exception {
		Connection conn = JDBCUtil.getConn();
		String sql = "insert into student (name,age) values('张三',30)";
		
		Statement st = conn.createStatement();
		//设置可获取主键
		st.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);
		//获取自动生成的id
		ResultSet res = st.getGeneratedKeys();
		if(res.next()) {
			int id = res.getInt(1);
			System.out.println(id);
		}
		JDBCUtil.close(conn, st, res);
	}
}

使用预编译语言的方法,创建语句时传入参数Statement.RETURN_GENERATED_KEYS

package com.iris.jdbc.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import com.iris.jdbc.util.JDBCUtil;

public class GenerateTest {
	public static void main(String[] args) throws Exception {
		Connection conn = JDBCUtil.getConn();
		String sql = "insert into student (name,age) values(?,?)";
		//设置可获取主键
		PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
		ps.setString(1, "李四");
		ps.setInt(2, 14);
		ps.executeUpdate();
		//获取自动生成的id
		ResultSet res = ps.getGeneratedKeys();
		if(res.next()) {
			int id = res.getInt(1);
			System.out.println(id);
		}
		JDBCUtil.close(conn, ps, res);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值