CallableStatement 对象为所有的DBMS 提供了一种以标准形式调用已储存过程的方法。已储 存过程储存在数据库中。对已储存过程的调用是 CallableStatement对象所含的内容。这种调用是 用一种换码语法来写的,有两种形式:一种形式带结果参,另一种形式不带结果参数。结果参数是 一种输出 (OUT) 参数,是已储存过程的返回值。两种形式都可带有数量可变的输入(IN 参数)、 输出(OUT 参数)或输入和输出(INOUT 参数)的参数。问号将用作参数的占位符。
在 JDBC 中调用已储存过程的语法如下所示。注意,方括号表示其间的内容是可选项;方括号本身并不是语法的组成部份。{call 过程名[(?, ?, ...)]} 返回结果参数的过程的语法为:{? = call 过程名[(?, ?, ...)]}不带参数的已储存过程的语法类似:{call 过程名}通常,创建 CallableStatement 对象的人应当知道所用的 DBMS 是支持已储存过程的,并且知道这些过程都是些什么。然而,如果需要检查,多种DatabaseMetaData 方法都可以提供这样的信息。例如,如果 DBMS 支持已储存过程的调用,则supportsStoredProcedures 方法将返回true,而getProcedures 方法将返回对已储存过程的描述。CallableStatement 继承 Statement 的方法 (它们用于处理一般的 SQL 语句),还继承了 PreparedStatement 的方法(它们用于处理 IN 参)。
CallableStatement 中定义的所有方法都用于处理 OUT 参数或INOUT 参数的输出部分:注册OUT 参数的JDBC 类型(一般SQL 类型)、从这些参数中检索结果,或者检查所返回的值是否为 JDBC NULL。
1、创建 CallableStatement 对象 CallableStatement 对象是用 Connection 方法 prepareCall 创建的。下例创建CallableStatement 的实例,其中含有对已储存过程getTestData 调用。该过程有两个变量,但不含结果参数: CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}"); 其中?占位符为IN、OUT 还是INOUT 参数,取决于已储存过程getTestData。
2、IN 和OUT 参数将IN 参数传给 CallableStatement 对象是通过 setXXX 方法完成的。该方法继承自PreparedStatement。所传入参数的类型决定了所用的setXXX 方法(例如,用 setFloat来传入float 值等)。
如果已储存过程返回 OUT 参数,则在执行 CallableStatement 对象以前必须先注册每个OUT参数的 JDBC 类型(这是必需的,因为某些 DBMS 要求 JDBC 类型)。注册 JDBC 类型是用registerOutParameter 方法来完成的。语句执行完后,CallableStatement 的 getXXX 方法将取回参数值。正确的 getXXX 方法是为各参数所注册的 JDBC 类型所对应的 Java 类型。换言之,registerOutParameter 使用的是 JDBC 类型(因此它与数据库返回的 JDBC 类型匹配),而 getXXX将之转换为 Java 类型。
分享到:
相关推荐
3. **jdbc-3_0-fr-spec.pdf**:这份文档应该涵盖了JDBC 3.0的完整规范,包括所有接口、类和方法的定义,以及相关的使用指南。 通过深入学习这些资源,开发者可以全面掌握JDBC 3.0和4.0的核心概念,提升数据库操作的...
### Java JDBC规范详解 #### 一、概述与背景 JDBC,即Java Database Connectivity,是Java平台中一种标准的数据访问技术,它允许Java程序通过一套统一的API接口访问各种关系型数据库。JDBC的出现解决了Java应用与...
以下是JDBC规范中涉及的一些关键组件: 1. **DataSource**: 数据源,它是应用程序获取数据库连接的入口点,通常来自连接池,可以更高效地管理数据库连接。 2. **DriverManager**: 驱动管理器,负责注册和管理JDBC...
- JDBC的主要组件包括:`DriverManager`、`Connection`、`Statement`、`PreparedStatement`、`CallableStatement` 和 `ResultSet`。 2. **第二次规范中的封装实践**: - 第二次规范主要是为了提高代码的可维护性...
JDBC提供了一层抽象,使得程序员不必关心底层数据库的具体实现细节,只需遵循JDBC规范即可实现跨数据库的代码复用,提高了程序的可移植性和可维护性。 JDBC的核心组件包括以下几个主要部分: 1. **Driver接口**:...
按照JDBC规范,这类驱动程序大致可以划分为以下四种类型: 1. **第一类**:这类驱动程序实际上是另一种数据访问API(例如ODBC)到JDBC的映射,例如JDBC-ODBC桥接驱动程序。此类驱动程序需要依赖本地库文件,因此不...
JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如执行SQL语句、连接数据库以及处理返回结果等功能。它是Java平台中用于数据库访问的标准API,类似于ODBC...
这个驱动包是专门为那些使用Java平台标准版(Java SE)7或更高版本的开发者设计的,因为它的名字`sqljdbc4`中的数字4暗示了它支持Java SE 7的 JDBC 4.0 规范。下面将详细解释`sqljdbc4`驱动包的相关知识点。 1. **...
### JDBC 3.0 规范详解 #### 一、概述 JDBC(Java Database Connectivity)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 编程语言编写的接口和类组成。JDBC 被设计...
JDBC API主要包括以下关键类和接口: - DriverManager:管理数据库驱动程序,负责加载和注册驱动,并建立到数据库的连接。 - Connection:表示到数据库的物理连接,通过该对象可以创建Statement或PreparedStatement...
- 版本兼容性:不同版本的sqljdbc可能不兼容新的JDBC规范或SQL Server版本,使用前需确认兼容性。 - 性能优化:合理设置连接池参数,避免过多的连接创建和关闭,以提高系统性能。 - 安全最佳实践:在生产环境中,...
jdbc 是一套协议,由 Sun 公司定义的一组接口,由数据库厂商来实现,并规定了 Java 开发人员访问数据库所使用的方法的调用规范。jdbc 的实现是由数据库厂商提供,以驱动程序形式提供。jdbc 在使用前要先加载驱动。...
SQL Server 2005 JDBC 驱动是由微软公司开发的一款用于Java应用程序与Microsoft SQL Server数据库之间进行连接的驱动程序,符合Java Database Connectivity (JDBC) 规范。这款驱动使得Java开发者能够在Java平台上...
- **抽象层**:这是JDBC规范协议定义的统一访问数据库的接口标准,由Sun Microsystems定义。 - **实现层**:JDBC驱动程序是由各个数据库厂商提供的具体实现,它们实现了抽象层定义的接口,从而实现了数据库的连接。 ...
2. **ojdbc5.jar**:这个JAR文件是针对Java SE 5的Oracle JDBC驱动程序,它包含了对JDBC 3.0规范的支持。ojdbc5.jar提供了一种方式,使得Java应用程序可以与Oracle 10g及更高版本的数据库进行交互。 3. **ojdbc6....
它的设计思想是,提供一个统一的API,使得Java开发者可以使用相同的接口来访问多种不同的数据库系统,而具体的数据库访问细节则由各个数据库厂商根据JDBC规范来实现。 JDBC包括了两个主要的包:`java.sql`和`javax....
MySQL JDBC驱动包是开源且免费的,它遵循Java Community Process的JDBC规范,为开发人员提供了高效、可靠的数据库连接方案。 首先,我们要理解JDBC(Java Database Connectivity)是什么。JDBC是Java平台的标准API...
Java Database Connectivity(JDBC)是Java编程语言中用于与各种类型数据库交互的一组接口和类。...确保在项目中正确引入对应数据库的JDBC驱动,然后按照JDBC规范编写代码,可以实现高效、可靠的数据库操作。
JDBC,全称为Java Database Connectivity,是Java语言中用来规范客户端程序如何访问数据库的应用编程接口,它为各种数据库提供了统一的访问方式。 在“dm-jdbc.rar”中,包含了多个版本的Dm7JdbcDriver,分别是Dm7...