java连接Oracle数据库

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包

Oraclejar
oracle10gojdbc14.jar
oracle11gojdbc6.jar
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值