`
youzhibing
  • 浏览: 51310 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

jdbc创建与调用存储过程

    博客分类:
  • jdbc
阅读更多
前提:知道Mysql创建存储过程的语法及sql语句,不知道先看一下这方面知识
      http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html
1、jdbc创建存储过程
  
private static Connection conn = null;
private static PreparedStatement pstmt = null;
public static void loginProcedure(){
		conn = getConnection();		// 这里getConnection方法没列出来,就是连接数据库,返回java.sql.Connection对象引用
		String procedureSQL = "create procedure USER_EXIST(in loginName varchar(50),out amount int)" +
			"select count(*) into amount from user where username = loginName ; ";
		try {
			pstmt = conn.prepareStatement(procedureSQL);
			pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			try {
				pstmt.close();
				pstmt = null;
				conn.close();
				conn = null;
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
		}

   主要是存储过程的sql语句的书写,其实写法和普通的jdbc书写sql语句一样,只是存储过程的纯sql语句本来就复杂些,特别是存储过程比较复杂的时候,jdbc的sql语句写法就要好好注意了,不过只要数据库的存储过程sql语句清楚的话,jdbc书写也还是简单的;
上面的String procedureSQL是简化的写法,一般化的写法如下:
  
String procedureSQL = " create procedure USER_EXIST(in loginName varchar(50),out amount int)" + 
			" begin" + 
			" declare middleVariable int;" +	//声明中间变量,用到的话就声明
			" select count(*) into amount from user where username = loginName;" +
			" end;" ;
		//在begin和end之间可以进行逻辑代码的书写

   当然,不能把凑起来的sql语句直接放到数据库中执行来检验是否正确,因为她解析不过来,需要按如下方式在数据库中输入
  
	mysql> delimiter $$						
	mysql> create procedure USER_EXIST(in loginName varchar(50),out amount int)
	    -> begin
	    -> declare middleVariable int;
	    -> select count(*) into amount from user where username = loginName;
	    -> end
	    -> $$
	Query OK, 0 rows affected (0.00 sec)
	
	mysql> delimiter ;

   delimiter $$是将Mysql的语句结束符改成$$,这样在创建存储过程中就能使用分号了(分号默认是Mysql的语句结束符) 最后delimiter ;是还原Mysql语句结束符
2、调用存储过程
  
	private static Connection conn = null;
		private static PreparedStatement pstmt = null;
	private static CallableStatement cstmt = null;
	String username = "132";		
		conn = getConnection();
		try {
			cstmt = conn.prepareCall("{call USER_EXIST(?,?)}");
			cstmt.setString(1, username);
			cstmt.registerOutParameter(2, Types.INTEGER);	//注册输出参数
			cstmt.execute();
			System.out.println(cstmt.getInt(2));			//与上注册的对应

		} catch (SQLException e) {
			e.printStackTrace();
		} finally{
			try {
				cstmt.close();
				cstmt = null;
				conn.close();
				conn = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

分享到:
评论

相关推荐

    JDBC 调用存储过程方法

    了解并熟练掌握JDBC调用存储过程的方法,能够帮助你更高效地实现Java程序与数据库之间的交互。 综上所述,Java程序员可以通过JDBC API方便地在Java应用程序中调用存储过程,提高代码的可读性和可维护性。通过理解并...

    JDBC调用存储过程

    3. **创建CallableStatement对象**:`CallableStatement`是JDBC提供的用于调用存储过程的接口。使用`Connection`对象的`prepareCall()`方法创建实例,例如`CallableStatement cs = conn.prepareCall("{call sp_name ...

    JDBC调用MySQL5存储过程[文].pdf

    // 创建调用存储过程的预定义SQL语句 String sql = "{call testprocedure(?,?,?)}"; try { // 创建过程执行器 CallableStatement cstmt = conn.prepareCall(sql); // 设置入参和出参 cstmt.setString(1, ...

    JDBC创建触发器 JDBC存储过程 JDBC创建表 数据备份 java备份数据库/JAVA恢复数据、java导入sql脚本

    其次,**JDBC存储过程** 是一组为了完成特定功能的SQL语句集,可以通过JDBC调用。Java程序员可以使用`CallableStatement`接口来执行存储过程,它允许我们传递参数并接收结果。存储过程可以提高性能,减少网络通信,...

    jdbc调用存储过程 函数例子

    本文将详细阐述如何通过JDBC在Java程序中调用存储过程和函数,并提供一个实际的例子。 ### 1. JDBC概述 JDBC是Java API,它提供了统一的接口来访问不同类型的数据库。通过JDBC,开发者可以进行数据库连接、执行SQL...

    jdbc调用存储过程实现增删改查

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

    java调用存储过程(含out参数)

    3. **准备CallableStatement**:对于调用存储过程,我们需要使用`CallableStatement`对象,它是`PreparedStatement`的子类,专门用于调用数据库存储过程。通过`Connection`对象的`prepareCall()`方法创建。 4. **...

    使用jdbc创建和调用触发器实现增删改查

    在描述中提到的“调用存储过程”,我们可以将创建好的触发器作为存储过程来调用,例如: ```java Connection conn = DriverManager.getConnection(url, username, password); CallableStatement cs = conn....

    jdbc调用存储过程,函数,游标

    本篇文章将详细讲解如何利用JDBC调用存储过程、函数以及处理游标。 首先,存储过程是数据库中预编译的一组SQL语句,它允许我们封装复杂的业务逻辑,提高执行效率,减少网络传输的数据量。在JDBC中调用存储过程通常...

    在MS SQL server2000中创建和调用存储过程

    ### 在MS SQL Server 2000中创建和调用存储过程 #### 一、概述 存储过程是在数据库中预编译并存储的一组SQL语句,可以接受输入参数、返回输出参数、返回多行结果集或返回一个整数值。在MS SQL Server 2000中创建和...

    jdbc执行存储过程

    综上所述,通过JDBC执行存储过程涉及到加载适当的驱动、建立数据库连接、准备和调用存储过程,以及处理可能的结果集。这一流程不仅增强了代码的可维护性和可读性,还充分利用了数据库的能力,提高了应用的整体性能和...

    java 调用存储过程

    值得注意的是,上述代码中的文件名列表(如Project1.cfg、Unit1.dcu等)与Java调用存储过程无关,它们看起来像是Delphi或FreePascal项目的文件,这些文件通常用于描述项目配置、单元信息、表单布局等,而不是与Java...

    jdbc调用存储过程

    JDBC(Java Database Connectivity)是Java语言中用来与数据库交互的标准API,它提供了一种标准的方式来调用存储过程。本篇将详细介绍如何通过JDBC来调用Oracle数据库中的存储过程,并解析示例代码的关键部分。 ###...

    用JDBC操作Oracle的存储过程返回值

    3. **创建CallableStatement对象**:JDBC提供`CallableStatement`接口来调用存储过程。你需要提供一个SQL的CALL语句,格式为`{call procedure_name(?, ?...)}`,其中问号代表参数: ```java CallableStatement cs ...

    Spring+Jdbc scott用户的调用存储过程

    标题中的“Spring+Jdbc scott用户的调用存储过程”涉及到的是在Java开发中使用Spring框架的JDBC模块来调用数据库的存储过程。在Java应用程序中,Spring JDBC提供了一个简单且有效的方式来处理数据库交互,包括执行...

    birt调用存储过程

    BIRT使用JDBC的存储过程SQL转义语法来调用存储过程。调用方式分为两种: - **带返回值的调用**:适用于返回单个结果集或特定值的存储过程。 - **不带返回值的调用**:主要用于执行那些不返回数据,但可能改变...

    jdbc调用mysql5.0的存储过程和方法

    CallableStatement 调用mysql5.0的存储过程和方法 配有创建存储过程和方法的源代码

    存储过程- 06.在应用程序中调用存储过程

    - **使用API或驱动**:大多数数据库提供API(如Java的JDBC,C#的ADO.NET)或驱动程序,允许开发者在应用程序代码中调用存储过程。例如,在Java中,使用CallableStatement对象可以调用存储过程。 - **SQL命令**:在...

    java调用存储过程实例

    在IT领域,特别是数据库操作与Java编程的交集部分,调用存储过程是常见的需求之一。根据提供的文件信息,我们可以深入解析如何在Java中通过JDBC(Java Database Connectivity)调用Oracle数据库的存储过程。 ### ...

Global site tag (gtag.js) - Google Analytics