jdbc——CallableStatement,cst调用存储过程

时间:2021-11-08 05:55:45
package CST对象调用存储过程;

import java.sql.CallableStatement;
import java.sql.Types;

import org.junit.Test;

import 配置方式.dbUtils.Connection2;

/**
 * java调用存储过程
 * 
 * @author lx
 * 
 */

public class CallableStatementDemo {
    /**
     * 调用存储过程
     * 
     * @throws Exception
     */
    @Test
    public void callPro2() throws Exception {
        // 由于CallableStatement对象,继承了PST对象,
        // 所在它支持用?做为参数的占位符
        String pro = "{call p1(?,?)}";
        // 声明CST对象
        CallableStatement cst = Connection2.GetCon().prepareCall(pro);
        // 可以设置参数
        cst.setInt(1, 2);
        cst.setString(2, "张三");
        // 执行
        cst.executeUpdate();

    }
    
    /**
     * 调用带有返回值过程
     * @throws Exception
     */
@Test
    public void call2() throws Exception {

        // 第三个值为返回参数
        String sql = "{call p2(?,?,?)}";
        CallableStatement cst = Connection2.GetCon().prepareCall(sql);

        cst.setInt(1, 1);
        cst.setString(2, "JACK");
        // 第三个值通过注册方法说明这是一个返回值
        cst.registerOutParameter(3, Types.INTEGER);
        int a = cst.executeUpdate();
        System.err.println("影响行数"+a);
        //获取返回值
        int count =cst.getInt(3);
        System.err.println("现在的行数是"+count);
        Connection2.GetCon().close();

    }

}