1.存储过程的概念
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
2.JDBC调用存储过程的方法
JDBC提供了相应的接口来调用关系数据库中的存储过程,下面通过MySql来阐述JDBC是如何调用存储过程的。
JDBC 中的 CallableStatement 对象为所有的关系数据库管理系统提供了一种标准形式调用存储过程的方法。对存储过程的调用有两种形式:带结果参数和不带结果参数。结果参数是一种输出参数,是存储过程的返回值。两种形式都可带有数量可变的输入(IN 参数)、输出(OUT 参数)或输入和输出(INOUT 参数)的参数。
在 JDBC 中调用存储过程的语法为:{call procedure_name[(?, ?, ...)]};返回结果参数的存储过程的语法为:{? = call procedure_name[(?, ?, ...)]};不带参数的存储过程的语法为:{call procedure_name}。其中,问号代表参数,方括号表示其间的内容是可选项。
3.JDBC 调用存储过程的一个实例
下面通过一个简单的例子来了解一下CallableStatement对象的使用:
首先在数据库中,建立一个Student表,表的格式和内容如下:
id name age major
001 Tom 20 Computer Science
002 Jack 19 Computer Science
003 Pony 22 Computer Science
建立一个存储过程,传入一个学生ID,返回这个学生详细信息。
create procedure proc (stuID varchar(20))
begin
select * from student where id=stuID;
end
下面是调用存储过程的部分java源代码:
public static void getData() { try {
//获取数据库连接对象
Connection conn = getConnection();
//实例化CallableStatement对象,调用存储过程
CallableStatement call = conn.prepareCall("{call proc2(?)}");
//为存储过程传入参数
call.setString(1, "002");
//执行存储过程,返回结果集。
call.execute();
//获取返回的结果集,并且依次输出。
ResultSet rst = call.getResultSet();
while (rst.next()) {
System.out.println(rst.getString(1) + "\t" + rst.getString(2)
+ "\t" + rst.getString(3) + "\t" + rst.getString(4));
}
} catch (Exception e) {
e.printStackTrace();
}
}
该贴被xiuwen.zhao编辑于2014-8-22 17:02:09