JDBC获得数据库生成的主键 佟强 http://blog.csdn.net/microtong 在实际开发中,数据库中表的主键经常会由数据库负责生成,INSERT语句插入数据时插入除了主键以外的字段。很多情况下,当INSERT语句提交给数据库引擎执行完成后,程序需要获得生成的主键以便根

JDBC获得数据库生成的主键 佟强

http://blog.csdn.net/microtong

在实际开发中,数据库中表的主键经常会由数据库负责生成,INSERT语句插入数据时插入除了主键以外的字段。很多情况下,当INSERT语句提交给数据库引擎执行完成后,程序需要获得生成的主键以便根据主键查询插入的记录。JDBC通过在调用语句对象的executeUpdate()方法时,给出第二个参数Statement.RETURN_GENERATED_KEYS

来说明希望数据库引擎返回生成的主键。生成的主键以结果集的形式返回,程序调用语句对象的getGeneratedKeys()

方法得到一个结果集。遍历这个结果集,即得到数据库生成的主键。

我们以MySQL5.0数据库为例,创建会员表“member”,其中字段ID是数据负责生成的自动增量的整数。下列SQL语句创建会员表:

/* 创建MySQL5.0 表member*/

create table member(

id int not null auto_increment

, /*数据库自动生成的主键*/

name varchar(100), /*会员姓名*/

email varchar(255), /*电子邮件*/

primary key (id)

)type = InnoDB default character set gbk;

获得主键的代码 GeneratedKey.java

package cn.oakcms;

import java.sql.*;

public class GeneratedKey {

public static void main(String[] args) {

Connection conn = null; //连接对象

Statement stmt = null; //语句对象

ResultSet rs = null; //结果集

try{

//加载MySQL驱动程序

Class.forName("com.mysql.jdbc.Driver");

//连接字符串

String url = "jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=gbk";

//建立数据库连接

conn = DriverManager.getConnection(url,"root","");

//创建语句对象

stmt = conn.createStatement();

//INSERT语句

String sql = "insert into member(name,email) values('张三','zhangsan@gmail.com')

";

//执行INSERT语句,说明要返回数据库生成的主键

int count = stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);

System.out.println("成功插入"+count+"条记录!");

//产生的主键以结果集的形式返回

rs = stmt.getGeneratedKeys();

//遍历结果集,输出主键,实际上结果集只有一条记录

while(rs.next()){

long id = rs.getLong(1);

System.out.println("产生的主键是:"+id);

}

//关闭结果集、语句、连接

rs.close(); stmt.close(); conn.close();

}catch(Exception e){

e.printStackTrace();

}finally{

if(rs!=null) try{rs.close();}catch(Exception ignore){}

if(stmt!=null) try{stmt.close();}catch(Exception ignore){}

if(conn!=null) try{conn.close();}catch(Exception ignore){}

}

}

}

程序的运行结果如下,每次运行都将插入一条新的记录,生成一个新的ID。

成功插入1条记录!

产生的主键是:6

OakCMS内容管理系统

http://www.oakcms.cn

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql getgeneratedkeys,JDBC获得数据库生成的主键(JDBC、Primary Key)相关推荐

  1. mysql之列属性篇四之 —— 主键(primary key)

    主键 顾名思义:主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性 创建主键 随表创建 系统提供了两种增加主键的方式 1. 方案1:直接在需要当做主键的字段之后,增加p ...

  2. 主键约束(PRIMARY KEY) [MySQL][数据库]

    主键约束(PRIMARY KEY) 主键约束的特点: 主键约束相当于唯一性约束+ 非空约束,主键约束不允许重复,也不允许出现空值 一个表最多只能有一个主键约束,建立主键约束可以在列级别创建,也可以再表 ...

  3. MySQL数据库——MySQL主键(PRIMARY KEY)

    主键(PRIMARY KEY)的完整称呼是"主键约束",是 MySQL 中使用最为频繁的约束.一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键. 主键 ...

  4. MySQL主键(PRIMARY KEY)

    "主键(PRIMARY KEY)"的完整称呼是"主键约束".MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键 ...

  5. 2、MySQL主键(PRIMARY KEY)

    主键(PRIMARY KEY)的完整称呼是"主键约束",是 MySQL 中使用最为频繁的约束.一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键. 主键 ...

  6. Oracle数据库-主键(primary key)、外键(foreign key)、候选键(candidate key)、超键(super key)和references总结...

    主要介绍一下个人对主键(primary key).外键(foreign key).候选键(Candidate key).超键(super key).references的总结 概念: 主键:用户选择元 ...

  7. SQL约束(主键约束 primary key、外键约束 foreign key、唯一约束unique 、CHECK约束)

    注意: A.表中有数据不能创建约束 B.视图下设置后,要点击保存(只有保存后在才看的到) c   别忘了,点刷新,才会出来呀! 1.主键约束 primary key 主键是每行的唯一标识符,仅仅通过它 ...

  8. 主键(primary key)的设置和添加

    主键(primary key)的设置和添加 1.先创建了表,往表里添加主键 mysql> alter table user-> add primary key(useID); 2.创建表时 ...

  9. mysql中的主键关键字_MySQL主键(PRIMARY KEY)

    "主键(PRIMARY KEY)"的完整称呼是"主键约束".MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键 ...

最新文章

  1. 软件测试用python一般用来做什么-想要成为一个优秀的软件测试人员,应该学些什么?...
  2. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )
  3. nginx 网站目录重写
  4. 【干货】PMcaff干货课程学习精彩分享:Apple Watch 技术特性详解
  5. matlab的开方算法_正确的「记事本」打开方式:能渲染3D图像,还能玩贪吃蛇
  6. String,StringBuffer与StringBuilder的区别?
  7. 给一名准90后程序员的指导——学好IT?无用论?
  8. 只能在测试中注射吗?
  9. JAVA获取Classpath根路径的方法
  10. css网格_CSS网格初学者指南
  11. mysql完全手册阅读笔记
  12. 八位流水灯的verilog代码_Arduino入门 第七节-彗星灯 呼吸流水灯
  13. 原子性 - synchronized关键词
  14. Laravel Eloquent 数据查询结果中日期的格式化
  15. 干货丨面向新基建,安全厂商都准备了哪些前瞻性的“武器”?
  16. 220v降压成5v电路图-220v降压5v简单电路
  17. 看甲骨文如何在云端一路高歌猛进!
  18. 如何在Genymotion虚拟设备上安装Google框架(Play,Accounts等)? [重复]
  19. 建筑力学与结构【3】
  20. C++中关于switch的一些理解

热门文章

  1. 【目标检测-YOLO】YOLOv5-5.0v-数据处理(第三篇)
  2. 【jQuery教科书】从jQuery语法到jQuery ajax的每一个知识点(学习总结)
  3. 论文笔记:DeepFuse: A Deep Unsupervised Approach for Exposure Fusion with Extreme Exposure Image Pairs
  4. 力扣刷题-专项突破-SQL入门
  5. 超简单案例:分层卡方检验怎么做?
  6. 一木.溪桥---Python之周边
  7. 黑马程序员 学习毕老师java视频第14.15.16天
  8. 【Abp VNext】实战入门(七):【1】xxx.Web网站层 —— API接口服务添加跨域访问支持
  9. 智慧城市借助计算机 物联网,面向智慧城市的物联网应用支撑平台解决方案(CCIDIT-IOT)...
  10. Unity3D课程——粒子系统与流动效果