Java调用Oracle数据库的存储过程-入门基础

1 环境准备

开发平台:

win10 pro+jdk1.8+idea2019.3+oracle 10g(xp虚拟机)+maven3.5.3

搭建环境:

  1. 新建一个maven工程,项目类型直接选择JavaSE。

  2. 编写pom文件,填写下面的坐标。

     <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc14</artifactId>
                <version>10.2.0.1.0</version>
            </dependency>
        </dependencies>
    

    注意:ojdbc14如果无法直接识别和下载,需要将ojdbc14的jar包安装到本地仓库。
    步骤如下:

    2.1 将下载的ojdbc14.jar解压

    在这里插入图片描述

    2.2 在解压后的文件夹\ojdbc14\META-INF中找到MANIFEST.MF文件,用文本编辑器打开,并记住图中的版本号

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cUXwoj1g-1592755434823)(Untitled.assets/image-20200621234143337.png)]

    2.3 在ojdbc所在的jar包目录下打开命令行,并运行以下命令(注意,版本需要修改为上一步得到的版本号):

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc14.jar
    

    控制台出现BUILD SUCCESS就成功安装jar包了!

2 环境测试

新建测试类,并编写方法:

 /**
     * 测试连接数据库,查询数据
     * @throws Exception
     */
    @Test
    public void javaCallOracle() throws Exception {
        //注册数据库驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //获取连接
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.254.10:1521:orcl", "cncs", "cncs");
        //获取预处理对象
        PreparedStatement pstm = conn.prepareStatement("select * from emp where empno = ?");
        //给参数赋值
        pstm.setInt(1, 7788);
        //执行数据库查询操作,并获取结果集
        ResultSet resultSet = pstm.executeQuery();
        //遍历结果
        while(resultSet.next()){
            System.out.println(resultSet.getString("ename"));
        }
        //释放资源
        resultSet.close();
        pstm.close();
        conn.close();
    }

测试成功,进入下一步,如果测试不对,先检查有没有导入ojdbc14的坐标。

3 调用存储过程

打开JDK-API,搜索CallableStatement,找到转义语法的格式:

//存储函数书写格式
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
//存储过程书写格式
{call <procedure-name>[(<arg1>,<arg2>, ...)]}

编写调用存储过程的函数:

    /**
     * 测试调用存储过程
     *  {call <procedure-name>[(<arg1>,<arg2>, ...)]}
     */
    @Test
    public void javaCallProceduce() throws Exception{
        //注册数据库驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //获取连接
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.254.10:1521:orcl", "cncs", "cncs");
        //获取预处理对象
        CallableStatement cs = conn.prepareCall("{call p_yearsal(?,?)}");
        //给参数赋值
        cs.setInt(1, 7788);
        cs.registerOutParameter(2, OracleTypes.NUMBER);
        //执行存储过程
        cs.execute();
        System.out.println(cs.getObject(2));
    }

4 调用存储函数

编写调用存储函数的函数:

    /**
     * 测试调用存储函数
     * {?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
     *
     */
    @Test
    public void javaCallFunction() throws Exception{
        //注册数据库驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //获取连接
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.254.10:1521:orcl", "cncs", "cncs");
        //获取预处理对象
        CallableStatement cs = conn.prepareCall("{? = call f_yearsal(?)}");
        //给参数赋值
        cs.setInt(2, 7499);
        cs.registerOutParameter(1, OracleTypes.NUMBER);
        //执行存储过程
        cs.execute();
        System.out.println(cs.getObject(1));
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值