锁定老帖子 主题:jdbc 获得刚刚自动生成的主键
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-02-02
最后修改:2010-02-03
上学的时候给一个公司做网站,碰到过一个小问题:如何获得刚刚插入记录的自动生成的主键。 比如我要生成一个订单,那么需要往两张表插入记录:“订单表”和“商品项目表”(“商品项目表”以“订单表”的主键作为外键)。 当时我的做法非常的笨拙,插入记录后,根据多个条件将该记录的主键查询出来,呵呵; 后来为了避免这个问题,我就先把这个主键得到然后再进行插入,反正都够笨的。 我当时学习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);
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-08
whistler 写道
上学的时候给一个公司做网站,碰到过一个小问题:如何获得刚刚插入记录的自动生成的主键。 比如我要生成一个订单,那么需要往两张表插入记录:“订单表”和“商品项目表”(“商品项目表”以“订单表”的主键作为外键)。 当时我的做法非常的笨拙,插入记录后,根据多个条件将该记录的主键查询出来,呵呵; 后来为了避免这个问题,我就先把这个主键得到然后再进行插入,反正都够笨的。 我当时学习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);
|
|
返回顶楼 | |
浏览 4108 次