java基础巩固---jdbc接口CallableStatement执行存储过程

来源:互联网 发布:学完c语言可以做什么 编辑:程序博客网 时间:2024/04/30 23:17

CallableStatement执行存储过程

/**

 * 使用CablleStatement调用存储过程

 * @author APPle

 *

 */

public class Demo1 {

 

    /**

     * 调用带有输入参数的存储过程

     * CALL pro_findById(4);

     */

    @Test

    public void test1(){

       Connection conn = null;

       CallableStatement stmt = null;

       ResultSet rs = null;

       try {

           //获取连接

           conn = JdbcUtil.getConnection();

          

           //准备sql

           String sql = "CALL pro_findById(?)";//可以执行预编译的sql

          

           //预编译

           stmt = conn.prepareCall(sql);

          

           //设置输入参数

           stmt.setInt(1, 6);

          

           //发送参数

           rs = stmt.executeQuery(); //注意:所有调用存储过程的sql语句都是使用executeQuery方法执行!!!

          

           //遍历结果

           while(rs.next()){

              int id = rs.getInt("id");

              String name = rs.getString("name");

              String gender = rs.getString("gender");

              System.out.println(id+","+name+","+gender);

           }

          

       } catch (Exception e) {

           e.printStackTrace();

           throw new RuntimeException(e);

       } finally {

           JdbcUtil.close(conn, stmt ,rs);

       }

    }

   

    /**

     * 执行带有输出参数的存储过程

     * CALL pro_findById2(5,@NAME);

     */

    @Test

    public void test2(){

       Connection conn = null;

       CallableStatement stmt = null;

       ResultSet rs = null;

       try {

           //获取连接

           conn = JdbcUtil.getConnection();

           //准备sql

           String sql = "CALL pro_findById2(?,?)";//第一个?是输入参数,第二个?是输出参数

          

           //预编译

           stmt = conn.prepareCall(sql);

          

           //设置输入参数

           stmt.setInt(1, 6);

           //设置输出参数(注册输出参数)

           /**

            * 参数一:参数位置

            * 参数二:存储过程中的输出参数的jdbc类型    VARCHAR(20)

            */

           stmt.registerOutParameter(2, java.sql.Types.VARCHAR);

          

           //发送参数,执行

           stmt.executeQuery(); //结果不是返回到结果集中,而是返回到输出参数中

          

           //得到输出参数的值

           /**

            * 索引值:预编译sql中的输出参数的位置

            */

           String result = stmt.getString(2); //getXX方法专门用于获取存储过程中的输出参数

          

           System.out.println(result);

 

       } catch (Exception e) {

           e.printStackTrace();

           throw new RuntimeException(e);

       } finally {

           JdbcUtil.close(conn, stmt ,rs);

       }

    }

}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 平常成绩好期末却考不好怎么办 初中生去国外上学国内的学校怎么办 孩子在学校不受老师的重视怎么办 孩子上二年级了不爱学习怎么办 接别人的班被学生讨厌怎么办 孩子在学校老师打孩子家长怎么办? 宝宝不听话我老忍不住打他怎么办 两岁宝宝断母乳不愿意喝奶粉怎么办 2岁半的宝宝叛逆不听话怎么办? 2岁半宝宝说什么不听话怎么办? 误把脱毛膏当牙膏用了刷牙怎么办 儿子1岁5个月了不说话怎么办 两岁小儿不会说话和智商低怎么办 宝宝不会说话教他说他不愿意怎么办 25个月宝宝不愿意学说话怎么办 老师说小孩在幼儿园老是说话怎么办 在外留学想领养一个外国小孩怎么办 三岁半的宝宝想去美国上学怎么办 农村新房边的老老祖坟不搬怎么办 倒西太阳晒的房子夏天很热怎么办 客厅壁纸用的浅灰色影视墙怎么办 我喜欢玩手机游戏妈妈很生气怎么办 家里墙上有很多白色的虫子怎么办 3岁半宝宝学数字学不会怎么办 小孩子读一年级拼音读不好要怎么办 4个月的婴儿恶心干呕怎么办 生了小孩后胆汁酸偏高怎么办 9个月宝宝吃盐了怎么办 两个月宝宝母乳拉大便太稀怎么办呀 两个月的宝宝不拉大便怎么办 两个月宝宝五天没拉大便怎么办 4个月宝宝不拉大便怎么办 2个月宝宝3天没拉大便怎么办 宝宝拉不出大便老是憋的哭怎么办 九个月的宝宝不爱吃水果怎么办 顺产侧切伤口发炎化脓有臭味怎么办 一岁宝宝感冒发烧39度怎么办 宝宝二岁半了只吃水果不吃饭怎么办 8个月小孩发烧39度怎么办 咳嗽吃了很多药都不见效果怎么办 生完孩子半个月奶水越来越少怎么办