本文共 3236 字,大约阅读时间需要 10 分钟。
Oracle连接四要素(个人写法,用户与用户密码因人而异)
driverClassName=oracle.jdbc.OracleDriver jdbc_url=jdbc:oracle:thin:@localhost:1521:ORCL jdbc_username=scott jdbc_password=scott调用存储过程的关键代码:CallableStatement psta = con.prepareCall("{call proc_name(?, …)}");
调用存储函数的关键代码:CallableStatement psta = con.prepareCall("{? = call func_name(?, …)}");
pom依赖:Oracle 10g对应的依赖为ojdbc14.jar,而Oracle 11g对应的依赖为ojdbc6.jar
junit junit 4.12 test com.oracle.database.jdbc ojdbc6 11.2.0.4 runtime
主程序代码:
package com.wanakiko.oracle;import oracle.jdbc.OracleTypes;import org.junit.Test;import java.sql.*;/** * @author WanAkiko * @create-time 2021-05-30 */public class JavaCallsProcAndFunc { private static final String url = "jdbc:oracle:thin:@localhost:1521:ORCL"; private static final String user = "scott"; private static final String password = "scott"; @Test public void javaCallsFunction() throws Exception { // 加载数据库驱动 Class.forName("oracle.jdbc.OracleDriver"); // 获取Connection连接 Connection con = DriverManager.getConnection(url, user, password); // 准备调用自定义存储函数 CallableStatement psta = con.prepareCall("{? = call func_calc_salary(?)}"); psta.registerOutParameter(1, OracleTypes.NUMBER); psta.setObject(2, 7788); // 执行自定义存储函数 psta.execute(); // 接收并输出存储函数的RETURN结果 System.out.println(psta.getObject(1)); psta.close(); con.close(); } @Test public void javaCallsProcedure() throws Exception { // 加载数据库驱动 Class.forName("oracle.jdbc.OracleDriver"); // 获取Connection连接 Connection con = DriverManager.getConnection(url, user, password); // 准备调用自定义存储过程 CallableStatement psta = con.prepareCall("{call proc_calc_sal(?, ?)}"); psta.setObject(1, 7788); psta.registerOutParameter(2, OracleTypes.NUMBER); // 执行自定义存储过程 psta.execute(); // 输出OUT参数附带的结果 System.out.println(psta.getObject(2)); psta.close(); con.close(); } @Test public void testEnvironmentSetup() { try { // 加载数据库驱动 Class.forName("oracle.jdbc.OracleDriver"); // 获取Connection连接 final String url = "jdbc:oracle:thin:@localhost:1521:ORCL"; final String user = "scott"; final String password = "scott"; Connection con = DriverManager.getConnection(url, user, password); // 获取预处理语句并为查询参数赋值 PreparedStatement psta = con.prepareStatement("SELECT * FROM emp WHERE empno = ?"); psta.setObject(1, 7788); // 执行查询操作 ResultSet rs = psta.executeQuery(); while (rs.next()) { System.out.println(rs.getString("ename")); } rs.close(); psta.close(); con.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }
转载地址:http://bpmzi.baihongyu.com/