Java调用Oracle存储过程

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参考文档。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值