← 返回首页
JDBC教程(五)
发表时间:2020-03-21 15:05:29
讲解JDBC之CallableStatement

JDBC调用数据库中的存储过程,可以使用CallableStatement对象。

1.创建存储过程

以MySQL为例,我们创建一个名字叫sumCoursePassNumber的存储过程,需要使用输入和输出参数,其中输入参数表示指定的课程编号,输出参数表示返回的及格人数。

#创建存储过程
create PROCEDURE  sumCoursePassNumber(in p_cid varchar(4),out num int)
begin
  select count(*) into num from score where cid= p_cid and score>=60;
end;

#查询课程编号为'C001'的及格人数
call sumCoursePassNumber('C001',@num);
select @num;

2.使用CallableStatement调用MySQL存储过程

编写测试类。

        Connection conn = null;
        CallableStatement cstmt = null;
        String sql = "";
        try{
            conn = DBUtils.getConnection();
            sql = "{call sumCoursePassNumber(?,?)}";
            cstmt = conn.prepareCall(sql);
            //传参 
            cstmt.setString(1, "C001");
            cstmt.registerOutParameter(2, Types.NUMERIC);
            //执行存储过程
            cstmt.execute();
            System.out.println("C001这门课程及格人数是:"+cstmt.getInt(2));

        }catch(Exception ex){
            ex.printStackTrace();
        }

运行结果:
C001这门课程及格人数是:2