`

利用JDBC获取新插入记录id的三种方法

 
阅读更多

在一对多的关联操作中,通常在一方插入记录后,需要获取到当前记录的id,以方便进行多方的插入操作。要解决这一问题,在JDBC中至少有三种不同的实现方法:
1.在插入语句后添加一条查询,利用resultset来得到id号
psmt = con.prepareStatement
 

        ("insert into orders (receiver,address,telephone,total,detailnum,userid)values(?,?,?,?,?,?);select

@@identity");
            psmt.setString(1, order.getReceiver());
            ……
            results = psmt.executeQuery();
            if(results.next())
            {
                num = results.getInt(1);
            }
2.利用generatedKey来获取id
psmt = con.prepareStatement
            ("insert into orders (receiver,address,telephone,total,detailnum,userid)values

(?,?,?,?,?,?)",Statement.RETURN_GENERATED_KEYS);
            psmt.setString(1, order.getReceiver());
            ……
            psmt.executeUpdate();
            results = psmt.getGeneratedKeys();
            int num = -1;
            if(results.next())
            {
                num = results.getInt(1);
            }

3.调用存储过程来实现,当然这种情况下,插入对象的属性不宜过多,否则存储过程的输入参数太多。在存储过程中,将id作为输出参数返回
CallableStatement proc = conn.prepareCall("{call proc_insert(?,?,?)}");
            proc.setString(1, cardname);
            proc.setInt(2, money);
            proc.registerOutParameter(3, Types.INTEGER);
            proc.execute();
            num = proc.getInt(3)

分享到:
评论

相关推荐

    JDBC连接数据库的操作

    这段代码向表`abc`中插入了一条新的记录,其中`id`为8,`num`为678,`name`为'hehe'。 - **更新数据**: ```java String sql = "UPDATE abc SET name='woaini' WHERE id=2"; int i = st.executeUpdate(sql); ...

    spring+jdbc组合开发

    例如,`UserServiceImp`可能有`selectUserById`方法用于根据ID获取用户,`insertUser`方法用于添加新用户,它们分别调用`JdbcTemplate`的相应方法,并提供SQL语句和参数。 此外,Spring还提供了`...

    用JDBC编写新闻页面

    新闻页面的实现还可能涉及到动态网页技术,如JSP(JavaServer Pages)或Servlet,它们与JDBC结合,接收用户的请求,通过JDBC获取新闻数据,然后动态生成HTML响应返回给用户。 总结来说,"用JDBC编写新闻页面"这个...

    JDBC实现客户关系管理

    在IT行业中,客户关系管理...通过学习和理解这些代码,你可以掌握如何利用JDBC与MySQL数据库进行交互,以及如何在实际项目中应用时间控件、字符截取和分页等技术,这对于提升你的Java数据库编程技能是非常有帮助的。

    JDBC CRUD操作的粗略封装DEMO

    我们可以通过分析这个DEMO来学习如何利用JDBC进行数据处理。 首先,我们需要理解JDBC的基本步骤: 1. **加载驱动**:使用`Class.forName()`方法加载数据库驱动。 2. **建立连接**:通过`DriverManager.get...

    基于java基础和JDBC的小型员工管理系统

    - **类与对象**:员工管理系统的核心是员工类(Employee),它包含了员工的属性如ID、姓名、职位等,以及对应的方法如获取和设置属性值。 - **封装**:通过类的私有化属性和公有方法实现数据的保护和访问控制。 -...

    JDBC简单写法JDBC简单写法JDBC简单写法

    Java Database Connectivity(JDBC)是Java程序与关系型数据库交互的一种标准接口。它允许开发者用Java语言编写数据库操作代码,从而实现对数据库的查询、插入、更新和删除等操作。本篇文章将详细介绍JDBC的基本使用...

    网络留言本V1.0-JDBC 实现

    1. 插入新留言:通过PreparedStatement的executeUpdate()方法,插入一条包含用户ID、留言内容、时间等信息的新记录。 2. 查询留言:根据用户需求,可能需要按时间、ID等条件查询留言,这可以通过PreparedStatement的...

    java jdbc简单论坛设计

    在这个“java jdbc简单论坛设计”项目中,我们将探讨如何利用JDBC实现一个基础的在线论坛系统,涵盖用户注册、登录以及发布信息等功能。下面将详细阐述相关知识点。 1. **JDBC基础** - JDBC是Java中用来访问数据库...

    Struts2-Crud+JdbcDemo最简单的Struts2+jdbc学习曾删改查程序

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它...通过学习这个项目,你可以了解到Web应用的基本架构,以及如何使用Struts2处理HTTP请求,利用JDBC与数据库交互。这将为后续深入学习Java Web开发打下坚实的基础。

    获取自增ID.docx

    本文详细介绍了在Java环境中如何获取自增ID的三种主要方法:XML配置方法、JDBC方法以及Hibernate方法。每种方法都有其适用场景,开发者可以根据项目的具体需求选择最适合的方案。无论是通过框架还是直接使用JDBC API...

    jdbc—Java开发数据库连接

    利用JDBC,开发者可以在Java代码中编写数据库操作的语句,实现对数据库的连接、查询、更新和管理等功能。JDBC为Java开发中的数据库连接提供了一套标准,使得开发者可以使用相同的代码,通过不同的数据库驱动来访问...

    spring famework 操作数据库使用jdbc示例代码

    例如,假设我们有一个名为 `users` 的表,想要插入一条新记录: ```java @Service public class UserService { @Autowired private JdbcTemplate jdbcTemplate; public void addUser(String username, String ...

    jdbc+jsp实现简单员工管理系统.doc

    7. **批量删除**:对于批量删除,通过`request.getParameterValues("chks")`获取用户选中的多个员工ID,然后遍历数组并逐一调用`deleteEmployee()`方法,实现多条记录的删除。 8. **页面跳转**:最后,JSP页面可能...

    精选_毕业设计_利用Servlet+JavaBea+JDBC简单实现购物车_完整源码

    例如,当用户将商品添加到购物车时,系统可能需要使用JDBC向数据库插入一条新的记录;当用户结账时,可能需要查询数据库获取商品信息并计算总价。 购物车系统的实现可能会包括以下几个关键部分: 1. **用户界面**...

    jdbc基本教程

    利用JDBC进行数据库的CRUD操作是其最常见且关键的应用场景。以SQL Server 2005的`pubs`数据库中的`jobs`表为例,下面展示使用`Statement`执行增删改操作的基本代码框架: ```java // 创建数据库连接 Connection ...

    JDBC_DAO设计思想与搭建骨架, 结合Service层讲解DAO层的异常处理

    在Java开发中,JDBC(Java Database Connectivity)是连接数据库的标准API,而DAO(Data Access Object)模式是一种常用的设计模式,用于封装对数据库的操作,以降低业务逻辑与数据访问之间的耦合度。本篇文章将深入...

    DocSys系统开发问题记录1

    在进行数据库操作时,尤其是在使用JDBC进行数据插入操作后,如何有效地获取新插入记录的ID是一个常见的需求。JDBC默认情况下,`insert`, `update`, `delete`等操作的返回值表示的是受影响的行数,并不能直接返回新...

    Mybatis 3+Mysql 实现批量插入

    MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 ### 二...

    sharding-jdbc开源分表框架整合mybatis-demo

    "sharding-jdbc开源分表框架整合mybatis-demo"这个资源提供了一个实践案例,帮助开发者理解如何在实际项目中利用Sharding-JDBC进行数据库的水平扩展,并与MyBatis无缝配合。通过学习这个demo,你可以掌握如何配置...

Global site tag (gtag.js) - Google Analytics