您的位置:首页 > 数据库 > Oracle

Java调用Oracle存储过程

2007-07-03 09:39 405 查看
Java调用Oracle存储过程

步骤:
1、编写Oracle存储过程;
2、编写数据库获取连接工具类;
3、编写简单应用调用存储过程。

实现:

1、Oracle存储过程
(省了,本文主要讲述怎么在java中调用存储过程)
在此假设此存储过程有三个参数,最后会返回一个游标。

2、数据库连接工具类
/**
* 数据库连接工具类
*/
public class DBUtil {
/**
* 连接工厂
*/
public static Connection makeConnection(){
Connection conn = null;
try {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:zfvdb", "root", "zfvims");
} catch (SQLException e) {
System.out.println("通过JDBC获取Oralce数据库链接对象出错!");
e.printStackTrace();
}
return conn;
}

/**
* 连接测试
*/
public static void main(String args[]){
if(DBUtil.makeConnection()==null){
System.out.println("获取数据库链接失败!");
}
System.out.println("JDBC获取Oracle数据库链接成功!");
}
}

3、调用存储过程

/**
* 调用存储过程测试
*/
public class Test {
/**
* 测试方法
*/
public void test(){
Connection conn = DBUtil.makeConnection();

String sql = "{call p_test(?,?,?)}";
CallableStatement cs;
try {
cs = conn.prepareCall(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
cs.setLong(1, "1300");
cs.setString(2, "2006-01-01");
cs.setString(3, "2007-01-01");
ResultSet rs = cs.executeQuery();
while (rs.next()) {
//todo:进行相关操作
}
rs.close();
cs.close();
} catch (SQLException e) {
System.out.println("调用存储过程p_test出现异常!");
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
System.out.println("发生不能关闭JDBC链接的异常,请检查!");
e.printStackTrace();
}
}

}

public static void main(String args[]){
new Test().test();
}
}

说明:Java调用其他数据库的存储过程方式和此例一样,存储过程有的不返回值,比如对数据库执行一些update、insert、delete等操作。这个时候调用有所不同。详细请参看J2SDK参考文档。
本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/32713
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: