Home  >  Article  >  Database  >  JDBC获得数据库生成的主键(JDBC、Primary Key)

JDBC获得数据库生成的主键(JDBC、Primary Key)

WBOY
WBOYOriginal
2016-06-07 15:23:571730browse

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

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn