使用java程序调用oracle数据库的 procedure
使用java程序操作oracle需要提供 jdbc 的驱动包, 自行下载
第一步: 新建java项目,导入驱动包,程序如下
package demo1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test1 {
private static Statement sm;
private static Connection ct;
public static void main(String[] args) {
try {
// 1,加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 取得连接对象
ct = DriverManager.getConnection("jdbc:oracle:thin:@192.168.242.134:1521:ORCL", "scott", "root");
sm = ct.createStatement();
ResultSet result = sm.executeQuery("select ename from emp ");
while (result.next()) {
System.out.println("用户名:" + result.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {// 关闭资源连接
try {
sm.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
由上可知,这是一个select语句,与mysql连接并无太大区别,原因在于java的jdbc是一套标准接口,个数据库厂商可根据接口编写自己的驱动程序,对程序员来说,jdbc的用法大同小异.
接下里,我们主要看如何调用数据库的存储过程
要调用存储过程首先我们要先写一个存储过程
create procedure sp_pro3(spName varchar2, newSal number) is begin --执行部分,根据用户名去修改工资 update emp set sal=newSal where ename=spName;
写完之后不要忘记执行一下啦!
最后,java程序调用该存储过程
package demo1;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/** * 用java程序调用一个存储过程 * *@author DELL-PC * */
public class Test2 {
private static CallableStatement statement;
private static Connection ct;
public static void main(String[] args) {
try {
// 1,加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 取得连接对象
ct = DriverManager.getConnection("jdbc:oracle:thin:@192.168.242.134:1521:ORCL", "scott", "root");
statement = ct.prepareCall("{call sp_pro3(?,?)}");
statement.setString(1, "SMITH");
statement.setInt(2, 10000);
statement.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
我们编写了一个存储过程 sp_pro3(spName varchar2, newSal number);
在java代码中使用 ct.prepareCall(“{call sp_pro3(?,?)}”); 来调用,然后进行传参,执行即可.