【问题标题】:Apache DBUtils - Stored ProcedureApache DBUtils - 存储过程
【发布时间】:2012-02-03 06:15:50
【问题描述】:

apache dbutils 库是否可以调用oracle 存储过程?

【问题讨论】:

    标签: java stored-procedures jdbc apache-commons


    【解决方案1】:

    是的,因为它只使用 JDBC - 你需要一个 JDBC driver for Oracle

    【讨论】:

    • CallableStatements 的 API 调用是什么?我在 dbUtils 源代码中没有看到 CallableStatement 用法。
    • 它根本不处理语句,它对你隐藏了 - 如果你需要 CallableStatements 使用普通的 JDBC 来调用 - 尽管 ResultSetHandler 仍然可以使用
    • 谢谢马克,但由于调用存储过程需要 CallableStatement dbutils 不支持吗?
    【解决方案2】:

    是的:

    QueryRunner run = JDBCConnectionFactory.getQueryRunner(database);
    Connection conn = run.getDataSource().getConnection();
    CallableStatement cs = conn.prepareCall("{CALL procName()}");
    ResultSet rs = cs.executeQuery();
    JongoResultSetHandler handler = new JongoResultSetHandler(true);
    return handler.handle(rs);
    

    这里我使用 QueryRunner 实例来获取它的连接,因为它是由 DBUtils 管理的。考虑关闭连接、异常处理等。

    希望这会有所帮助。

    【讨论】:

    • 简而言之,这是不可能的,因为没有一个AbstractQueryRunner 实现不支持存储过程调用。
    猜你喜欢
    • 2012-11-07
    • 2016-08-06
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多