CallableStatement的实例

本文介绍如何使用Java的CallableStatement对象来调用MySQL数据库中的存储过程。包括存储过程的创建、参数传递及返回值处理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念

CallableStatement 对象用于执行对数据库已存在的存储过程的调用。


    二、先对存储过程语法说明

1、先配置一个存储过程

http://blog.youkuaiyun.com/u010439954/article/details/46475969

上面网页对存储过程的说明


2、表的结构test

id varchar(12) primary key

name  varchar(12) not null

先插入一条数据

insert into test  (id,name)values("001","wang");


3、创建测试用的存储过程

>delimiter //

>create proceduce test_proc(in user_id varchar(12), out user_name varchar(12))

      ->begin

      ->select name into user_name from test where id = user_id;

      ->end;

      ->//

      ->delimiter ;


4、查看存储过程是否存在 ,可忽略

select name from mysql.proc where db='自己的数据库名' and name='存储过程名如(test_proc)'


5、测试存储过程是否有效 ,可忽略

定义两个变量,并初始化

>set @user_id = '001';

>set @user_name = null;

调用存储过程

>call test_proc(@user_id,@user_name);

查看返回结果

>select @user_name;

有返回值则成功。

       三、 CallableStatement 语法说明
其主要语法有 IN 和 OUT。

   IN 参数传给 CallableStatement 对象是通过 setXXX 方法完成的。所传入参数的类型决定了所用的 setXXX 方法,如使用setInt(1,12);对数据库表中第一个整型类型的传入一个整型。

OUT 参数返回 储存数据。在执行 CallableStatement 对象以前必须先了解其数据表数据类型,注册每个 OUT 参数返回的 JDBC 类型。语句执行完后,CallableStatement 的 getXXX 方法将取回参数值。正确的 getXXX 方法是为各参数所注册的 JDBC 类型所对应的 Java 类型。

四、 CallableStatement 的java案例

   java连接mysql的驱动包这里就不说了


package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;
import java.sql.CallableStatement;

public class mysqltest {
	public static void main(String args[]) {
		Connection conn = null;
		CallableStatement statement = null;
		String url = "jdbc:mysql://localhost:3306/le?characterEncoding=UTF-8";
		String username = "root";
		String password = "123456"; 

		try {
			// 加载驱动程序以连接数据库	
			Class.forName("com.mysql.jdbc.Driver");		
			//使用各自的账号密码,连接数据库
			conn = DriverManager.getConnection(url, username, password);
			//数据库存储过程的方法
			String sql = "{call test_proc(?,?)}";
			//调用数据库存储过程
			statement = conn.prepareCall(sql);
			//对第一个参数传入字符串类型
			statement.setString(1,"001");
			//注册第二个参数为返回值,并定义为字符串类型
			statement.registerOutParameter(2, Types.VARCHAR);
			//执行数据库操作
			int issucess = statement.executeUpdate();
			if(issucess>0)
			{
				//返回第二个参数返回值
				String msg=statement.getString(2);
				System.out.println(msg);
			}
		} catch (Exception cnfex) {
			cnfex.printStackTrace();
		}


	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值