`
zhjump
  • 浏览: 10454 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

[10]JDBC调用存储过程和插入数据后返回主键

    博客分类:
  • Java
阅读更多

[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调用存储过程实现增删改查

    ### JDBC调用存储过程 1. **加载驱动**:使用`Class.forName()`方法加载Oracle的JDBC驱动,例如`oracle.jdbc.driver.OracleDriver`。 2. **建立连接**:通过`DriverManager.getConnection()`方法获取数据库连接。 3....

    JSP调用SQL Server的存储过程

    ### JSP调用SQL Server的存储过程 在本篇文章中,我们将探讨如何通过JSP页面来调用SQL Server中的存储过程。此示例涉及到数据库表的创建、存储过程的定义以及JSP页面上的具体实现。 #### 数据库表的创建 首先,...

    jdbc_data.rar

    10. **存储过程和函数**:学习如何在SQL中创建、调用存储过程和用户自定义函数。 综上所述,“jdbc_data.sql”文件可能是为了演示这些JDBC和SQL概念而创建的一个实例,包含了一些实际的数据库操作,如创建表、插入...

    oracl存储过程以及mybatis的调用

    映射器XML文件中的`&lt;insert&gt;`标签使用`statementType="CALLABLE"`指示这是一个调用存储过程的语句。然后,我们使用`{call ...}`语法来定义存储过程的调用,其中每个参数都以`#{}`包裹,`jdbcType`指定了JDBC的类型,...

    Spring Jdbc的jar包

    此外,Spring JDBC的`JdbcOperations`接口扩展了`JdbcTemplate`,提供了一组通用的JDBC操作,包括执行SQL查询、调用存储过程等。`NamedParameterJdbcTemplate`则是另一个扩展,它支持命名参数的SQL查询,使得查询...

    SpringJDBC训练素材.zip

    在学习Spring JDBC的过程中,你将深入理解如何设置数据源、事务管理以及如何进行CRUD(创建、读取、更新和删除)操作。 首先,要了解Spring JDBC的基本架构,包括DataSource、JdbcTemplate、SimpleJdbcInsert、...

    Struts2 JDBC 增删改查

    1. **增加(Insert)**:使用JDBC的PreparedStatement对象,可以创建预编译的SQL插入语句,将用户输入的数据安全地插入到数据库中。记得在事务管理中正确提交或回滚操作。 2. **删除(Delete)**:通过编写删除特定...

    spring jdbc 整合

    它们可以自动构建SQL语句,并返回生成的主键或者调用存储过程后的结果。 二、事务管理 Spring JDBC支持声明式和编程式事务管理。声明式事务管理通过配置元数据(如XML或注解)来指定事务边界,而编程式事务管理则...

    数据库基础与JDBC编程技术.

    数据库基础与JDBC编程技术是IT领域中至关重要的部分,主要涉及如何管理和操作数据以及如何通过Java语言与数据库进行交互。下面将详细讲解这两个主题。 首先,我们来探讨数据库基础。数据库是一个组织和存储数据的...

    idea jdbc 示例程序

    在这个项目中,开发者可能已经展示了如何配置数据库驱动,创建数据库连接,执行查询、更新、插入和删除等操作。 【标签】"ideajdbc" 标签明确了这是关于IDEA和JDBC的结合,说明我们将看到如何在IDEA环境中配置和...

    SQLServer2008存储过程实现数据插入与更新

    调用存储过程通常有两种方式:在SQL Server Management Studio(SSMS)中直接执行或在应用程序中通过ADO.NET、ODBC或JDBC等接口调用。在SSMS中,我们可以这样调用: ```sql declare @rtn int exec sp_Insert_...

    存储过程-自动生成编号

    在IT行业中,数据库管理和开发是不可或缺的部分,而存储过程作为一种高效的数据处理手段,常常被用于实现复杂的业务逻辑和数据操作。本话题将深入探讨“存储过程-自动生成编号”这一功能,以及它如何解决编号统一...

    08_ibatis教程_sql主键生成方式.rar

    Ibatis允许开发者自定义SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。在主键生成方面,Ibatis提供了多种策略来适应不同的数据库系统和业务需求。 1. **手工设置主键(Manual...

    spring整合jdbc学习资料

    在Java中,我们可以使用CallableStatement来调用存储过程。例如,创建CallableStatement,设置输入参数和输出参数,然后执行executeUpdate()获取结果。 JdbcTemplate是Spring为JDBC提供的一种抽象,它简化了数据库...

    java web中的oracle存储过程

    根据提供的文件信息,本文将详细解析Java Web应用中与Oracle数据库交互时,如何利用存储过程实现数据的增删查操作。 ### 一、查询数据(返回List集合) #### 存储过程定义 首先,我们需要在Oracle数据库中创建一个...

    【Servlet+JDBC项目】EMS员工管理系统

    在这个项目中,采用了经典的三层架构设计模式,即表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这样的设计使得系统结构清晰,各层之间职责分明,有利于...

    jdbc+servlet+javabean+mysql的数据库增删改查的案例

    在本案例中,JDBC用于连接MySQL数据库,执行SQL语句,包括插入、更新、删除和查询数据。JDBC驱动是Java程序与特定数据库通信的桥梁,你需要在项目中配置相应的驱动类,如com.mysql.jdbc.Driver。 **Servlet** ...

    JDBC学习笔记教程文档

    以上内容只是JDBC学习的基础,更深入的学习还包括批处理、预编译的PreparedStatement、事务管理、结果集的滚动和分页、存储过程的调用等。理解并熟练掌握这些概念和技术,对于Java开发者来说至关重要,因为无论是在...

    java web实现用户登录注册_javaweb_jdbc_servlet_

    在这个项目中,Servlet将作为控制器,接收前端页面发送的请求,调用相应的业务逻辑,并返回响应结果。 2. **JDBC(Java Database Connectivity)**: JDBC是Java访问数据库的标准API,通过JDBC可以实现对数据库的...

Global site tag (gtag.js) - Google Analytics