注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 可扩展、高可用、负载均衡..
 帮助

Java调用Oracle存储过程


2007-07-03 09:39:27
 标签:Java Oracle 存储   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/32713
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



上一篇 通用的JDBC连接实现  下一篇 ODS实现过程



    文章评论
 
2007-07-03 22:38:52
太厉害啦,Oracle存储过程的调用,受用啦

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: