jdbc 获得刚刚自动生成的主键

上学的时候给一个公司做网站,碰到过一个小问题:如何获得刚刚插入记录的自动生成的主键。

比如我要生成一个订单,那么需要往两张表插入记录:“订单表”和“商品项目表”(“商品项目表”以“订单表”的主键作为外键)。

当时我的做法非常的笨拙,插入记录后,根据多个条件将该记录的主键查询出来,呵呵;

后来为了避免这个问题,我就先把这个主键得到然后再进行插入,反正都够笨的。

我当时学习jdbc的时候看的 JDBC Database Programming with J2EE 这本书,当时我觉得够全的了,上面都没讲如何获得新纪录的自动生成主键,网上也没搜到,我以为就没办法了,前段时间写jdbc课件看api文档时才发现有相关支持,特发表此文,给刚入门的同学提个醒。

 

我们需要用到下面两个方法:

 

Connection接口定义的方法

 

 PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) 
 创建一个默认 PreparedStatement 对象,该对象能获取自动生成的键。

 

 Statement接口定义的方法

 

ResultSet getGeneratedKeys() 
获取由于执行此 Statement 对象而创建的所有自动生成的键。 

 

 

以下表为例:

 

 

 CREATE TABLE userinfo(
   id int IDENTITY(1,1) PRIMARY KEY NOT NULL,
   name varchar(50) NULL
 )

 

 

java代码实现:

String sql = "insert into userinfo values ('张三')";
PreparedStatement stmt = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
stmt.executeUpdate();
ResultSet rs = stmt.getGeneratedKeys();
int newid = 0;
if(rs.next()) newid = rs.getInt(1);

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值