java连接Oracle数据库
程序员文章站
2024-01-08 13:14:10
java连接Oracle数据库和java连接mysql数据库大同小异,下面是java连接oracle的一段测试代码。使用的数据表是orcle数据库中scott下的表复制到自己创建的用户下。并且创建了一些存储过程和存储函数create or replace procedure proc_countyearsal(eno in number,esal out number)asbeginselect sal*12+nvl(comm,0) into esal from emp where empno...
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