开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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参考文档。
 

本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/32713,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java调用存储过程长时间未执行完问题-解决方案
Java调用存储过程长时间未执行完问题-解决方案
0 0
MySQL---数据库从入门走向大神系列(八)-在java中执行MySQL的存储过程
MySQL---数据库从入门走向大神系列(八)-在java中执行MySQL的存储过程
0 0
使用Java Spring消费MySQL中的数据库存储过程
使用Java Spring消费MySQL中的数据库存储过程
0 0
Map与Set高频面试算法题(只出现一次的数字,复制带随机指针的链表,宝石与石头,旧键盘,前k个高频单词)(Java实现)
给一个非空整数数组,只有一个元素出现了一次,剩余的元素都出现了两次,,请找出那个只出现一次的数字
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java基础入门(四)-泛型、反射、注解
立即下载
JAVA反射原理以及一些常见的应用
立即下载
Java开发手册1.1.0
立即下载