`

JDBC之CallableStatement(转)

阅读更多

CallableStatement接口扩展PreparedStatement,用来调用存储过程,它提供了对输出和输入/输出参数的支持。CallableStatement接口还具有对PreparedStatement接口提供的输入参数的支持。

CallableStatement中定义的所有方法都用于处理OUT参数或INOUT参数的输出部分:注册OUT参数的JDBC类型(一般SQL类型),从这些参数中检索结果,或者检查所返回的值是否为JDBC NULL!

 

1,创建CallableStatement对象:

        CallableStatement对象是用Connection方法prepareCall创建的。下例创建CallableStatement的实例,其中含有对已存储过程PROC_H2_HZ_RE调用。

Session session = null;
CallableStatement st = null;
try {
     session = uiDao.getHibernateTemplate().getSessionFactory().openSession();
     Connection conn = session.connection();
     // 生成存储过程名
      st = conn.prepareCall("{ call PROC_H2_HZ_RE(?,?,?,?,?,?,?,?,?)}");

        其中?占位符为IN、OUT还是INOUT参数,取决于已存储过程PROC_H2_HZ_RE。

 

2,IN和OUT参数:

        将IN参数传给CallableStatement对象是通过setXXX方法完成的。该方法继承自PreparedStatement。所传入参数的类型决定了所用的setXXX方法(例如,用setFloat来传入float值等)。

st.setString("MOBILE", mobile);
st.setString("OPER", oper);
st.setDate("OPERTIME", new java.sql.Date(new Date().getTime()));
st.setInt("SOURCE", 1);
st.setInt("H2SERVICEID", 6);
st.setString("OPERTYPE", opertype);
st.setInt("HZTEL", Integer.valueOf(tranNum));

        如果已存储过程返回OUT参数,则在执行CallableStatement对象以前必须先注册每个OUT参数的JDBC类型(这是必须的,因为某些DBMS要求JDBC类型)。注册JDBC类型是用registerOutParameter方法来完成的。语句执行完后,CallableStatement的getXXX方法将取回参数值。正确的getXXX方法是为各参数所注册的JDBC类型所对应的Java类型。换言之,registerOutParameter使用的是JDBC类型(因此它与数据库返回的JDBC类型匹配),而getXXX将之转换为Java类型。

st.registerOutParameter("ERRORCODE", java.sql.Types.INTEGER);
st.registerOutParameter("CONTENT", java.sql.Types.VARCHAR);
st.execute();
Integer iret = st.getInt("errorcode");
String content = st.getString("content");

        作为示例,上述代码先注册OUT参数,执行由st所调用的已存储过程,然后检索在OUT参数中返回的值。从某个OUT参数中取出一个BigDecimal对象的话,可以在getBigDecimal()里双引号后面加上逗号再加上一个数字。(代表了小数点后面带几位数!)

 

3,最后关闭CallableStatement和Session:

} catch (Exception e) {
        System.out.println("异常--callTranferSet----"+e.getMessage());
} finally {
    try {
        if (null != st)
            st.close();
        if (null != session)
            session.close();
    } catch (SQLException e1) {
    }
}

 

分享到:
评论

相关推荐

    JDBC基础教程之CallableStatement.doc

    ### JDBC基础教程之CallableStatement详解 #### 一、概述 在数据库编程中,为了提高代码的复用性和执行效率,通常会使用存储过程。存储过程是预编译并存储在数据库中的SQL语句集合,可以接受输入参数并返回输出...

    JDBC-Student.rar_callablestatement_dbtoobject_java 学员 管理 系统_jdbc

    1. **CallableStatement**:CallableStatement是JDBC接口,用于执行存储过程。在学员管理系统中,如果数据库中包含存储过程,CallableStatement允许我们调用它们,并传递参数及接收返回值。与PreparedStatement类似...

    JDBCDriver3.0.rar_jdbc driver 3.0_sql jdbc 3.0_sql server jdbc_s

    开发者可以通过CallableStatement对象来执行存储过程,并获取其返回的结果。 在安全性方面,JDBC Driver 3.0支持SSL加密,保证了数据传输的安全性。同时,它还支持Windows集成认证,简化了身份验证流程。 在实际...

    Spring Data JDBC与JDBC的区别

    集成Spring Data JDBC可以减少代码量,提高可维护性,并且由于Spring的其他模块(如Spring MVC和Spring Security)与之良好集成,可以构建更复杂的Web应用。例如,Spring MVC提供了模型-视图-控制器架构,使业务逻辑...

    jdbc jdbc jdbc

    Java Database Connectivity(JDBC)是Java编程语言中用于与各种数据库进行交互的一种标准接口。它由Sun Microsystems(现为Oracle公司)开发并定义,作为Java平台的一部分,允许Java应用程序通过编写Java代码来访问...

    java数据库连接CallableStatement

    CallableStatement 是 JDBC API 中的一个接口,主要用于执行数据库存储过程(Stored Procedures)。它支持 IN 参数、OUT 参数和 INOUT 参数,并且可以通过调用特定的方法来设置或获取这些参数。 #### 1.2 ...

    JDBC笔记JDBC笔记JDBC笔记

    3. **创建Statement对象**:用于执行SQL语句,有`Statement`、`PreparedStatement`和`CallableStatement`三种。 4. **执行SQL**:调用Statement对象的`executeQuery()`或`executeUpdate()`方法。 5. **处理结果集**...

    CallableStatement的用法

    在Java Database Connectivity (JDBC) API中,`CallableStatement` 是一种特殊的 `PreparedStatement` 类型,它主要用于执行存储过程或函数。存储过程是在数据库服务器上编译并存储的一组SQL指令,可以被多次调用并...

    JDBCJDBC高级应用

    在JDBC中,可以使用 `CallableStatement` 对象来调用存储过程。通过 `prepareCall(String sql)` 创建 `CallableStatement`,然后设置输入参数(如果有),最后使用 `execute()` 方法执行存储过程。 了解并熟练运用...

    jdbc 源码 oracle 自带jdbc

    在Java编程领域,JDBC(Java Database Connectivity)是连接Java应用程序和各种数据库的关键技术。它为开发者提供了一组标准接口,使得程序可以与多种数据库进行交互。Oracle JDBC驱动程序是Oracle公司提供的,用于...

    JDBC数据库连接测试

    本篇将深入讲解JDBC的基础知识,以及如何利用JDBC进行数据库的连接测试。 ### 1. JDBC概述 JDBC是Java平台的标准组成部分,它允许Java程序与各种数据库进行交互。通过JDBC,开发者可以编写可移植的代码,而无需...

    JDBC学习资料 jdbc编程

    5. CallableStatement:用于调用存储过程,与PreparedStatement相似,但可以处理OUT参数。 JDBC驱动程序类型: 1. JDBC-ODBC桥:依赖于ODBC驱动来连接数据库,适用于多种数据库。 2. Native-API partly Java驱动:...

    尚硅谷jdbc视频教程

    1. **DriverManager**: 它是JDBC的核心类之一,用于加载JDBC驱动并建立与数据库的连接。 2. **Connection**: 表示与数据库之间的连接,它是所有其他JDBC对象的工厂。 3. **Statement**: 用于向数据库发送静态SQL语句...

    sqljdbc4 (SQL连接驱动包)

    4. **SQL语句执行**:JDBC提供`Statement`、`PreparedStatement`和`CallableStatement`接口来执行SQL语句。`PreparedStatement`预编译SQL,提高性能,并防止SQL注入攻击;`CallableStatement`用于调用存储过程。 5....

    java之jdbc总结

    Java JDBC (Java Database Connectivity) 是Java编程语言中用于与各种关系型数据库进行交互的一组接口和类。在Java中,JDBC提供了一种标准的方法,让程序员能够编写数据库无关性的代码,这意味着同样的代码可以用来...

    jdbc连接数据库jdbc连接数据库

    JDBC 也提供了多种方式来执行 SQL 语句,包括使用 Statement 对象执行 SQL 语句,使用 PreparedStatement 对象执行带参数的 SQL 语句,还可以使用 CallableStatement 对象执行存储过程。 JDBC 提供了多种方式来处理...

    精通jdbc,jdbc自学文档,jdbc帮助文档

    JDBC还提供了CallableStatement用于调用存储过程,DatabaseMetaData获取数据库元数据,以及JDBC Connection Pool(如C3P0、HikariCP)等高级功能,以优化性能和资源管理。 通过这份JDBC自学文档,你可以逐步学习和...

    JDBC教程

    - **CallableStatement**: 用于调用存储过程的接口。 - **ResultSet**: 存储查询结果的对象,可以按行遍历数据。 ### 2. JDBC驱动类型 JDBC驱动有四种类型,分别是: - **类型1(JDBC-ODBC桥)**: 通过ODBC驱动与...

Global site tag (gtag.js) - Google Analytics