使用JDBC的存储过程

原创 2016年05月31日 23:16:26

使用jdbc调用mysql的存储过程

CallableStatement是使用JDBC调用存储过程的核心接口,使用该接口的步骤:
    1. 编写调用存储过程的sql语句,有两种形式:
        call  procedure_name(arg1,arg2,……)
        ?= call  procedure_name(arg1,arg2,……)
       调用存储过程的sql语句的参数可以使用?作为占位符


   2. 创建CallableStatement对象
       Connection.prepareCall(String sql)


   3. 按参数的顺序设置参数的值
       1) 如果是IN类型的参数,使用setXxx方法设置参数的值
       2) 如果是OUT类型的参数,使用registerOutParameter(int parameterIndex,int sqlType)注册输出参数类型


   4. 调用execute()方法执行存储过程


   5. 获取存储过程的执行结果
       1) OUT类型的参数的值通过getXxx方法获取
       2) 如果存储过程返回的是结果集,则使用getResultSet()方法获取结果集对象,并按传统方式获取结果集中的数据


例子:

编写存储过程

delimiter '//';

create procedure proc1(in user_name varchar(20),out user_password varchar(32))
begin
	select password into user_password from tb_admin where name=user_name;
end//

delimiter ';'//

java code:

import java.sql.*;

public class CallTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url="jdbc:mysql://localhost:3306/db_spring";
			String name="root";
			String password="123456";
			Connection con=DriverManager.getConnection(url, name, password);
			String sql="call proc1(?,?)";
			CallableStatement cs=con.prepareCall(sql);
			cs.setString(1, "zhangsan");
			cs.registerOutParameter(2, Types.VARCHAR);
			cs.execute();
			System.out.println(cs.getString(2));
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

如何在存储过程以及JDBC中使用Array

环境数据库:DB2语言: Java协议: JDBC4.0 及以上在存储过程中使用Array## 定义Array 类型: 在存储过程的最上面, 定义这个Array 类型DROP SPECI...

老调重弹:JDBC系列 之 存储过程 CallableStatement(创建和使用)

JDBC 存储过程 调用 CallableStatement

老调重弹:JDBC系列 之 存储过程 CallableStatement(创建和使用)

前言       最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解。所以便把JDBC 这个东东翻出来,老调重弹,好好总...

hibernate里使用jdbc方式调用oracle带游标返回参数的简单分页存储过程

最近要学一个hibernate调用游标,找来找去也没找到如何调用,最后看了许多文章,用jdbc方式来调用也是可以的,但是效率上就不行了,因为每次都要连接数据库,从而放弃了hibernate的对象持久化...

JAVA使用JDBC技术操作SqlServer数据库执行存储过程

JAVA使用JDBC技术操作SqlServer数据库执行存储过程: 1.新建SQLSERVER数据库:java_conn_test 2.新建表:tb_User 3.分别新建三个存储过程: 1>带参...

使用JDBC调用_存储过程

存储过程 使用JDBC调用存储过程 存储过程: DELIMITER $$ DROP  PROCEDURE IF EXISTS jdbc.addUser $$...
  • dwt1220
  • dwt1220
  • 2012年03月07日 22:23
  • 325

使用JDBC调用存储过程

使用JDBC调用存储过程 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定...

Jorm使用JDBC式的Connection实现存储过程和函数的调用

Jrom使用JDBC式的Connection实现存储过程和函数的调用,这个问题是峰回路转的,前几天看了别人写的例子被误导了,一直纠结处理,今天通过Jorm原始的JDBC方式的存储过程调用实现了该功能,...
  • boonya
  • boonya
  • 2013年11月01日 22:37
  • 1308

使用JDBC连接数据库并且调用存储过程和执行SQL语句

JDBC调用数据库: package com.hthk.iisz.util; import java.sql.Connection; import java.sql.DriverManager; pu...

【java工具】使用jdbc访问数据库获取某个存储过程信息及下面参数信息

首先,我们先写一个包含了最经常使用的参数的存储过程,然后利用jdbc获得该存储过程的信息及它对应所有参数的信息及内容。 【该测试针对的是sqlserver2005.】 【测试用存储过程如何...
  • cdnight
  • cdnight
  • 2013年05月07日 14:54
  • 893
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用JDBC的存储过程
举报原因:
原因补充:

(最多只允许输入30个字)