[10]JDBC调用存储过程和插入数据后返回主键
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; public class PsTest { /** * @param args * @throws SQLException */ public static void main(String[] args) throws SQLException { ps(); } static void ps() throws SQLException { Connection conn = null; CallableStatement cs = null;//可调用Statement ResultSet rs = null; try { // 2.建立连接 conn = JdbcUtils.getConnection(); // conn = JdbcUtilsSing.getInstance().getConnection(); // 3.创建语句 String sql = "{ call addUser(?,?,?,?) } ";//调用存储过程 cs = conn.prepareCall(sql); cs.registerOutParameter(4, Types.INTEGER); cs.setString(1, "ps name"); cs.setDate(2, new java.sql.Date(System.currentTimeMillis())); cs.setFloat(3, 100f); cs.executeUpdate(); int id = cs.getInt(4); System.out.println("id=" + id); } finally { JdbcUtils.free(rs, cs, conn); } } }
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class OtherApi { /** * @param args * @throws SQLException * @throws InterruptedException */ public static void main(String[] args) throws SQLException, InterruptedException { // int id = create(); // System.out.println("id:" + id); read(); } static void read() throws SQLException, InterruptedException { Connection conn = null; Statement st = null; ResultSet rs = null; try { // 2.建立连接 conn = JdbcUtils.getConnection(); // conn = JdbcUtilsSing.getInstance().getConnection(); // 3.创建语句 st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // 4.执行语句 rs = st .executeQuery("select id, name, money, birthday from user where id < 5"); // 5.处理结果 while (rs.next()) { int id = rs.getInt("id"); System.out.println("show " + id + "..."); Thread.sleep(10000); System.out.println(id + "\t" + rs.getObject("name") + "\t" + rs.getObject("birthday") + "\t" + rs.getObject("money")); } } finally { JdbcUtils.free(rs, st, conn); } } static int create() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 2.建立连接 conn = JdbcUtils.getConnection(); // conn = JdbcUtilsSing.getInstance().getConnection(); // 3.创建语句 String sql = "insert into user(name,birthday, money) values ('name2 gk', '1987-01-01', 400) "; ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);//返回的主键 ps.executeUpdate(); rs = ps.getGeneratedKeys();//返回的主键 int id = 0; if (rs.next()) id = rs.getInt(1);//返回的主键 return id; } finally { JdbcUtils.free(rs, ps, conn); } } }
相关推荐
### JDBC调用存储过程 1. **加载驱动**:使用`Class.forName()`方法加载Oracle的JDBC驱动,例如`oracle.jdbc.driver.OracleDriver`。 2. **建立连接**:通过`DriverManager.getConnection()`方法获取数据库连接。 3....
### JSP调用SQL Server的存储过程 在本篇文章中,我们将探讨如何通过JSP页面来调用SQL Server中的存储过程。此示例涉及到数据库表的创建、存储过程的定义以及JSP页面上的具体实现。 #### 数据库表的创建 首先,...
10. **存储过程和函数**:学习如何在SQL中创建、调用存储过程和用户自定义函数。 综上所述,“jdbc_data.sql”文件可能是为了演示这些JDBC和SQL概念而创建的一个实例,包含了一些实际的数据库操作,如创建表、插入...
映射器XML文件中的`<insert>`标签使用`statementType="CALLABLE"`指示这是一个调用存储过程的语句。然后,我们使用`{call ...}`语法来定义存储过程的调用,其中每个参数都以`#{}`包裹,`jdbcType`指定了JDBC的类型,...
此外,Spring JDBC的`JdbcOperations`接口扩展了`JdbcTemplate`,提供了一组通用的JDBC操作,包括执行SQL查询、调用存储过程等。`NamedParameterJdbcTemplate`则是另一个扩展,它支持命名参数的SQL查询,使得查询...
在学习Spring JDBC的过程中,你将深入理解如何设置数据源、事务管理以及如何进行CRUD(创建、读取、更新和删除)操作。 首先,要了解Spring JDBC的基本架构,包括DataSource、JdbcTemplate、SimpleJdbcInsert、...
1. **增加(Insert)**:使用JDBC的PreparedStatement对象,可以创建预编译的SQL插入语句,将用户输入的数据安全地插入到数据库中。记得在事务管理中正确提交或回滚操作。 2. **删除(Delete)**:通过编写删除特定...
它们可以自动构建SQL语句,并返回生成的主键或者调用存储过程后的结果。 二、事务管理 Spring JDBC支持声明式和编程式事务管理。声明式事务管理通过配置元数据(如XML或注解)来指定事务边界,而编程式事务管理则...
数据库基础与JDBC编程技术是IT领域中至关重要的部分,主要涉及如何管理和操作数据以及如何通过Java语言与数据库进行交互。下面将详细讲解这两个主题。 首先,我们来探讨数据库基础。数据库是一个组织和存储数据的...
在这个项目中,开发者可能已经展示了如何配置数据库驱动,创建数据库连接,执行查询、更新、插入和删除等操作。 【标签】"ideajdbc" 标签明确了这是关于IDEA和JDBC的结合,说明我们将看到如何在IDEA环境中配置和...
调用存储过程通常有两种方式:在SQL Server Management Studio(SSMS)中直接执行或在应用程序中通过ADO.NET、ODBC或JDBC等接口调用。在SSMS中,我们可以这样调用: ```sql declare @rtn int exec sp_Insert_...
在IT行业中,数据库管理和开发是不可或缺的部分,而存储过程作为一种高效的数据处理手段,常常被用于实现复杂的业务逻辑和数据操作。本话题将深入探讨“存储过程-自动生成编号”这一功能,以及它如何解决编号统一...
Ibatis允许开发者自定义SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。在主键生成方面,Ibatis提供了多种策略来适应不同的数据库系统和业务需求。 1. **手工设置主键(Manual...
在Java中,我们可以使用CallableStatement来调用存储过程。例如,创建CallableStatement,设置输入参数和输出参数,然后执行executeUpdate()获取结果。 JdbcTemplate是Spring为JDBC提供的一种抽象,它简化了数据库...
根据提供的文件信息,本文将详细解析Java Web应用中与Oracle数据库交互时,如何利用存储过程实现数据的增删查操作。 ### 一、查询数据(返回List集合) #### 存储过程定义 首先,我们需要在Oracle数据库中创建一个...
在这个项目中,采用了经典的三层架构设计模式,即表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这样的设计使得系统结构清晰,各层之间职责分明,有利于...
在本案例中,JDBC用于连接MySQL数据库,执行SQL语句,包括插入、更新、删除和查询数据。JDBC驱动是Java程序与特定数据库通信的桥梁,你需要在项目中配置相应的驱动类,如com.mysql.jdbc.Driver。 **Servlet** ...
以上内容只是JDBC学习的基础,更深入的学习还包括批处理、预编译的PreparedStatement、事务管理、结果集的滚动和分页、存储过程的调用等。理解并熟练掌握这些概念和技术,对于Java开发者来说至关重要,因为无论是在...
在这个项目中,Servlet将作为控制器,接收前端页面发送的请求,调用相应的业务逻辑,并返回响应结果。 2. **JDBC(Java Database Connectivity)**: JDBC是Java访问数据库的标准API,通过JDBC可以实现对数据库的...