当前位置: 移动技术网 > IT编程>开发语言>Java > java连接Oracle数据库

java连接Oracle数据库

2020年07月14日  | 移动技术网IT编程  | 我要评论

java连接Oracle数据库和java连接mysql数据库大同小异,下面是java连接oracle的一段测试代码。
使用的数据表是orcle数据库中scott下的表复制到自己创建的用户下。
并且创建了一些存储过程和存储函数

create or replace procedure proc_countyearsal(eno in number,esal out number)
as
begin
	select sal*12+nvl(comm,0) into esal from emp where empno=eno;
end;
create or replace function empincome(eno in emp.empno%type) return number is
	psal emp.sal%type;
	pcomm emp.comm%type;
begin
	select t.sal into psal from emp t where t.empno = eno;
	return psal*10+nvl(pcomm,0);
end;

编写测试代码,测试数据库的连接,以及测试存储过程和存储过程。

package com.liang;

import oracle.jdbc.OracleTypes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.sql.*;

public class testJdbc {


    private Statement statement;
    private Connection connection;

    /**
     * 测试方法执行前执行
     */
    @Before
    public void init(){
        String driver = "oracle.jdbc.OracleDriver";    //驱动标识符
        String url = "jdbc:oracle:thin:@localhost:1521:orcl"; //链接字符串
        String username = "liang";
        String password = "xxxxx";
        try {
            Class.forName(driver);//加载驱动
            connection = DriverManager.getConnection(url, username, password);//获取连接对象
            statement = connection.createStatement();//创建Statement对象
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 测试Oracle数据库连接
     */
    @Test
    public void jdbcTest(){
        try {
            statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("select * from emp");//执行SQL语句
            //遍历查询结果
            while (resultSet.next()){
                System.out.println(resultSet.getObject(1)+" : "+resultSet.getObject(2));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 调用存储过程
     */
    @Test
    public void testProcedure(){
        try {
            //创建一个调用数据库存储过程的 CallableStatement对象
            CallableStatement callableStatement = connection.prepareCall("{call proc_countyearsal(?,?)}");
            callableStatement.setInt(1,7839);//给 参数位置1 传递int类型的参数
            callableStatement.registerOutParameter(2, OracleTypes.NUMBER);//注册指定的输出参数
            callableStatement.execute();//执行存储过程
            System.out.println(callableStatement.getObject(2));
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 测试存储函数
     */
    @Test
    public void testFunction(){
        try {
            //创建一个调用数据库存储函数的 CallableStatement对象
            CallableStatement callableStatement = connection.prepareCall("{?= call empincome(?)}");
            callableStatement.setInt(2,7369);//给 参数位置2 传递int类型的参数
            callableStatement.registerOutParameter(1, OracleTypes.NUMBER);//注册指定的返回值
            callableStatement.execute();//执行存储函数
            System.out.println(callableStatement.getObject(1));
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 测试方法执行后执行
     */
    @After
    public void destroy(){
        try {
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

需要导入的jar包

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
        </dependency>

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0</version>
        </dependency>
    </dependencies>

此处需要注意的问题是:根据orale版本的不同需要的jar包也不同。
常用的两个Oracle数据库版本和需要的jar包

Oracle jar
oracle10g ojdbc14.jar
oracle11g ojdbc6.jar

本文地址:https://blog.csdn.net/Rong_zhe/article/details/107295493

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网