MongoDB 控制跳转 gps json reactjs deployment enums datatables 郑州网站建设 linux环境变量生效 linux自动获取ip erp项目描述 linux关闭mysql html好看的字体 python逻辑运算符 python随机函数 java斐波那契数列 java环境安装 java结构 java基础编程 java学习课程 java学习流程 java获取当前日期 java文件读取 蓝牙运动耳机排行榜 隐藏虚拟键 java程序设计基础 din字体 din字体下载 oem修改器 自动回复机器人 js小数点保留2位 comsol下载 字符串分割成数组 逗号的作用 操作系统安装 梦想世界答题器 igfxtray mac修改器 删除mysql服务
当前位置: 首页 > 学习教程  > 编程语言

CallableStatement执行存储过程

2021/1/13 20:39:14 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

/*** 使用CablleStatement调用存储过程**/ public class Demo1 {/*** 调用带有输入参数的存储过程* CALL pro_findById(4);*/Testpublic void test1(){Connection conn null;CallableStatement stmt null;ResultSet rs null;try {//获取连接conn JdbcUtil.getConnection();…

/**
 * 使用CablleStatement调用存储过程
 *
 */
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);
        }
    }
}

本文链接: http://www.dtmao.cc/news_show_600389.shtml

附件下载

上一篇:分块思想

下一篇:Java之三大特征

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?