`
qu_xiangjun805
  • 浏览: 20373 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

JDBC规范类之 CallableStatement

阅读更多
   
    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 类型。






分享到:
评论

相关推荐

    JDBC3.0 4.0规范

    3. **jdbc-3_0-fr-spec.pdf**:这份文档应该涵盖了JDBC 3.0的完整规范,包括所有接口、类和方法的定义,以及相关的使用指南。 通过深入学习这些资源,开发者可以全面掌握JDBC 3.0和4.0的核心概念,提升数据库操作的...

    Java JDBC规范和用例

    ### Java JDBC规范详解 #### 一、概述与背景 JDBC,即Java Database Connectivity,是Java平台中一种标准的数据访问技术,它允许Java程序通过一套统一的API接口访问各种关系型数据库。JDBC的出现解决了Java应用与...

    Spring Data JDBC与JDBC的区别

    以下是JDBC规范中涉及的一些关键组件: 1. **DataSource**: 数据源,它是应用程序获取数据库连接的入口点,通常来自连接池,可以更高效地管理数据库连接。 2. **DriverManager**: 驱动管理器,负责注册和管理JDBC...

    Java中jsp技术JDBC的规范

    - JDBC的主要组件包括:`DriverManager`、`Connection`、`Statement`、`PreparedStatement`、`CallableStatement` 和 `ResultSet`。 2. **第二次规范中的封装实践**: - 第二次规范主要是为了提高代码的可维护性...

    JDBC常考知识点,常用api

    JDBC提供了一层抽象,使得程序员不必关心底层数据库的具体实现细节,只需遵循JDBC规范即可实现跨数据库的代码复用,提高了程序的可移植性和可维护性。 JDBC的核心组件包括以下几个主要部分: 1. **Driver接口**:...

    DB2 JDBC驱动程序及其支持的功能简介

    按照JDBC规范,这类驱动程序大致可以划分为以下四种类型: 1. **第一类**:这类驱动程序实际上是另一种数据访问API(例如ODBC)到JDBC的映射,例如JDBC-ODBC桥接驱动程序。此类驱动程序需要依赖本地库文件,因此不...

    JDBC学习资料 jdbc编程

    JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如执行SQL语句、连接数据库以及处理返回结果等功能。它是Java平台中用于数据库访问的标准API,类似于ODBC...

    sqljdbc4 (SQL连接驱动包)

    这个驱动包是专门为那些使用Java平台标准版(Java SE)7或更高版本的开发者设计的,因为它的名字`sqljdbc4`中的数字4暗示了它支持Java SE 7的 JDBC 4.0 规范。下面将详细解释`sqljdbc4`驱动包的相关知识点。 1. **...

    JDBC DOC

    ### JDBC 3.0 规范详解 #### 一、概述 JDBC(Java Database Connectivity)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 编程语言编写的接口和类组成。JDBC 被设计...

    SUN给出JDBC代码例子

    JDBC API主要包括以下关键类和接口: - DriverManager:管理数据库驱动程序,负责加载和注册驱动,并建立到数据库的连接。 - Connection:表示到数据库的物理连接,通过该对象可以创建Statement或PreparedStatement...

    sqljdbc_3.0架包

    - 版本兼容性:不同版本的sqljdbc可能不兼容新的JDBC规范或SQL Server版本,使用前需确认兼容性。 - 性能优化:合理设置连接池参数,避免过多的连接创建和关闭,以提高系统性能。 - 安全最佳实践:在生产环境中,...

    jdbc基础的详解与总结

    jdbc 是一套协议,由 Sun 公司定义的一组接口,由数据库厂商来实现,并规定了 Java 开发人员访问数据库所使用的方法的调用规范。jdbc 的实现是由数据库厂商提供,以驱动程序形式提供。jdbc 在使用前要先加载驱动。...

    sqljdbc_3.0

    SQL Server 2005 JDBC 驱动是由微软公司开发的一款用于Java应用程序与Microsoft SQL Server数据库之间进行连接的驱动程序,符合Java Database Connectivity (JDBC) 规范。这款驱动使得Java开发者能够在Java平台上...

    J2EE体系统一,关于JDBC

    - **抽象层**:这是JDBC规范协议定义的统一访问数据库的接口标准,由Sun Microsystems定义。 - **实现层**:JDBC驱动程序是由各个数据库厂商提供的具体实现,它们实现了抽象层定义的接口,从而实现了数据库的连接。 ...

    oracle.jdbc.driver.oracledriver Oracle JDBC驱动包 ojdbc6

    2. **ojdbc5.jar**:这个JAR文件是针对Java SE 5的Oracle JDBC驱动程序,它包含了对JDBC 3.0规范的支持。ojdbc5.jar提供了一种方式,使得Java应用程序可以与Oracle 10g及更高版本的数据库进行交互。 3. **ojdbc6....

    JDBC ppt

    它的设计思想是,提供一个统一的API,使得Java开发者可以使用相同的接口来访问多种不同的数据库系统,而具体的数据库访问细节则由各个数据库厂商根据JDBC规范来实现。 JDBC包括了两个主要的包:`java.sql`和`javax....

    mysql jdbc驱动包

    MySQL JDBC驱动包是开源且免费的,它遵循Java Community Process的JDBC规范,为开发人员提供了高效、可靠的数据库连接方案。 首先,我们要理解JDBC(Java Database Connectivity)是什么。JDBC是Java平台的标准API...

    JDBC全部数据库的驱动

    Java Database Connectivity(JDBC)是Java编程语言中用于与各种类型数据库交互的一组接口和类。...确保在项目中正确引入对应数据库的JDBC驱动,然后按照JDBC规范编写代码,可以实现高效、可靠的数据库操作。

    dm-jdbc.rar

    JDBC,全称为Java Database Connectivity,是Java语言中用来规范客户端程序如何访问数据库的应用编程接口,它为各种数据库提供了统一的访问方式。 在“dm-jdbc.rar”中,包含了多个版本的Dm7JdbcDriver,分别是Dm7...

Global site tag (gtag.js) - Google Analytics