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详解 #### 一、概述 在数据库编程中,为了提高代码的复用性和执行效率,通常会使用存储过程。存储过程是预编译并存储在数据库中的SQL语句集合,可以接受输入参数并返回输出...
1. **CallableStatement**:CallableStatement是JDBC接口,用于执行存储过程。在学员管理系统中,如果数据库中包含存储过程,CallableStatement允许我们调用它们,并传递参数及接收返回值。与PreparedStatement类似...
开发者可以通过CallableStatement对象来执行存储过程,并获取其返回的结果。 在安全性方面,JDBC Driver 3.0支持SSL加密,保证了数据传输的安全性。同时,它还支持Windows集成认证,简化了身份验证流程。 在实际...
集成Spring Data JDBC可以减少代码量,提高可维护性,并且由于Spring的其他模块(如Spring MVC和Spring Security)与之良好集成,可以构建更复杂的Web应用。例如,Spring MVC提供了模型-视图-控制器架构,使业务逻辑...
Java Database Connectivity(JDBC)是Java编程语言中用于与各种数据库进行交互的一种标准接口。它由Sun Microsystems(现为Oracle公司)开发并定义,作为Java平台的一部分,允许Java应用程序通过编写Java代码来访问...
CallableStatement 是 JDBC API 中的一个接口,主要用于执行数据库存储过程(Stored Procedures)。它支持 IN 参数、OUT 参数和 INOUT 参数,并且可以通过调用特定的方法来设置或获取这些参数。 #### 1.2 ...
在Java Database Connectivity (JDBC) API中,`CallableStatement` 是一种特殊的 `PreparedStatement` 类型,它主要用于执行存储过程或函数。存储过程是在数据库服务器上编译并存储的一组SQL指令,可以被多次调用并...
在JDBC中,可以使用 `CallableStatement` 对象来调用存储过程。通过 `prepareCall(String sql)` 创建 `CallableStatement`,然后设置输入参数(如果有),最后使用 `execute()` 方法执行存储过程。 了解并熟练运用...
在Java编程领域,JDBC(Java Database Connectivity)是连接Java应用程序和各种数据库的关键技术。它为开发者提供了一组标准接口,使得程序可以与多种数据库进行交互。Oracle JDBC驱动程序是Oracle公司提供的,用于...
本篇将深入讲解JDBC的基础知识,以及如何利用JDBC进行数据库的连接测试。 ### 1. JDBC概述 JDBC是Java平台的标准组成部分,它允许Java程序与各种数据库进行交互。通过JDBC,开发者可以编写可移植的代码,而无需...
5. CallableStatement:用于调用存储过程,与PreparedStatement相似,但可以处理OUT参数。 JDBC驱动程序类型: 1. JDBC-ODBC桥:依赖于ODBC驱动来连接数据库,适用于多种数据库。 2. Native-API partly Java驱动:...
1. **DriverManager**: 它是JDBC的核心类之一,用于加载JDBC驱动并建立与数据库的连接。 2. **Connection**: 表示与数据库之间的连接,它是所有其他JDBC对象的工厂。 3. **Statement**: 用于向数据库发送静态SQL语句...
4. **SQL语句执行**:JDBC提供`Statement`、`PreparedStatement`和`CallableStatement`接口来执行SQL语句。`PreparedStatement`预编译SQL,提高性能,并防止SQL注入攻击;`CallableStatement`用于调用存储过程。 5....
Java JDBC (Java Database Connectivity) 是Java编程语言中用于与各种关系型数据库进行交互的一组接口和类。在Java中,JDBC提供了一种标准的方法,让程序员能够编写数据库无关性的代码,这意味着同样的代码可以用来...
- **CallableStatement**: 用于调用存储过程的接口。 - **ResultSet**: 存储查询结果的对象,可以按行遍历数据。 ### 2. JDBC驱动类型 JDBC驱动有四种类型,分别是: - **类型1(JDBC-ODBC桥)**: 通过ODBC驱动与...
**JDBC基础应用详解** **一、JDBC概述** JDBC(Java Database Connectivity)是Java语言与各种数据库之间通信的标准接口,由Sun Microsystems公司开发并引入Java平台,它允许Java程序通过标准API来访问和操作...
本项目文件"java之jdbc项目文件"涵盖了使用JDBC进行数据库操作的基本概念和实践应用。下面将详细阐述JDBC的核心知识点。 1. **JDBC API概述**: JDBC是Java平台的一部分,它允许Java应用程序连接到各种类型的...
- **CallableStatement**:用于访问数据库中的存储过程,提供了一些方法来指定语句所使用的输入/输出参数。 - **ResultSet**:查询返回的数据库结果集。 - **ResultSetMetaData**:用于获取关于ResultSet对象中列...