Fork me on GitHub

Oracle常见操作【使用Java操作存储过程和存储函数】

使用Java操作存储过程和存储函数

一:操作Oracle数据库的常用字符串

1 # Properties file with JDBC-related settings.
2 # Applied by PropertyPlaceholderConfigurer from "dataAccessContext-local.xml".
3 # Targeted at system administrators, to avoid touching the context XML files.
4 
5 jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
6 jdbc.url=jdbc:oracle:thin:@localhost:1521:orclstu
7 jdbc.username=system
8 jdbc.password=oracle
9 jdbc.readOnly=false

二:本地的Oracle数据库驱动包坐标

1 <!--Oracle的驱动包-->
2 <dependency>
3     <groupId>com.oracle</groupId>
4     <artifactId>ojdbc6</artifactId>
5     <version>11.2.0.4.0-atlassian-hosted</version>
6 </dependency>

三:具体实现

  1 package com.dream;
  2 
  3 import oracle.jdbc.OracleTypes;
  4 import oracle.jdbc.oracore.OracleType;
  5 import org.junit.Test;
  6 
  7 import java.sql.*;
  8 
  9 /**
 10  * @author ZhangJun
 11  * @date 2020-04-23
 12  * @description Oracle测试存储过程和存储函数
 13  */
 14 public class OracleDemo {
 15 
 16     /**
 17      * 测试Oracle的连接
 18      */
 19     @Test
 20     public void javaCallOracle() throws Exception {
 21         //1.加载数据库驱动
 22         Class.forName("oracle.jdbc.driver.OracleDriver");
 23         //2.获取Connection连接
 24         Connection connection = DriverManager.getConnection(
 25                 "jdbc:oracle:thin:@localhost:1521:orclstu",
 26                 "dream",
 27                 "dream");
 28         //3.得到预编译的Statement对象
 29         PreparedStatement statement = connection.prepareStatement("select * from emp where empno=?");
 30         //4.给参数赋值
 31         statement.setObject(1, 7788);
 32         //5.执行数据库查询操作
 33         ResultSet resultSet = statement.executeQuery();
 34         //6.输出结果
 35         while (resultSet.next()) {
 36             System.out.println(resultSet.getString("ename"));
 37         }
 38         //7.关闭连接
 39         resultSet.close();
 40         statement.close();
 41         connection.close();
 42     }
 43 
 44     /**
 45      * 测试Oracle的存储过程
 46      *  {?= call <procedure-name>[(<arg1>,<arg2>, ...)]} 调用存储函数使用
 47      *  {call <procedure-name>[(<arg1>,<arg2>, ...)]}  调用存储过程使用
 48      */
 49     @Test
 50     public void javaCallProcedure() throws Exception {
 51         //1.加载数据库驱动
 52         Class.forName("oracle.jdbc.driver.OracleDriver");
 53         //2.获取Connection连接
 54         Connection connection = DriverManager.getConnection(
 55                 "jdbc:oracle:thin:@localhost:1521:orclstu",
 56                 "dream",
 57                 "dream");
 58         //3.得到预编译的Statement对象
 59         CallableStatement statement = connection.prepareCall("{call p_yearsal(?,?)}");
 60         //4.给参数赋值
 61         statement.setObject(1, 7788);
 62         statement.registerOutParameter(2, OracleTypes.NUMBER);
 63         //5.执行数据库查询操作
 64         statement.execute();
 65         //6.输出结果
 66         System.out.println("年薪:"+statement.getObject(2));
 67         //7.关闭连接
 68         statement.close();
 69         connection.close();
 70     }
 71 
 72     /**
 73      * 测试Oracle的存储函数
 74      *  {?= call <procedure-name>[(<arg1>,<arg2>, ...)]} 调用存储函数使用
 75      *  {call <procedure-name>[(<arg1>,<arg2>, ...)]}  调用存储过程使用
 76      */
 77     @Test
 78     public void javaCallFunction() throws Exception {
 79         //1.加载数据库驱动
 80         Class.forName("oracle.jdbc.driver.OracleDriver");
 81         //2.获取Connection连接
 82         Connection connection = DriverManager.getConnection(
 83                 "jdbc:oracle:thin:@localhost:1521:orclstu",
 84                 "dream",
 85                 "dream");
 86         //3.得到预编译的Statement对象
 87         //操作存储过程和存储函数时,必须使用CallableStatement这个对象
 88         CallableStatement statement = connection.prepareCall("{?=call f_yearsal(?)}");
 89         //4.给参数赋值
 90         statement.setObject(2, 7788);
 91         //设置out返回对象
 92         statement.registerOutParameter(1, OracleTypes.NUMBER);
 93         //5.执行数据库查询操作
 94         statement.execute();
 95         //6.输出结果
 96         System.out.println("年薪:"+statement.getObject(1));
 97         //7.关闭连接
 98         statement.close();
 99         connection.close();
100     }
101 }

 

posted @ 2020-04-23 09:06  CodeZhangJ  阅读(46)  评论(0)    收藏  举报