当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

<b>JDBC底子教程之CallableStatement</b>[Java编程]

赞助商链接



  本文“<b>JDBC底子教程之CallableStatement</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

概述

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 范例.

作为示例,下述代码先注册 OUT 参数,履行由 cstmt 所调用的已储存历程 ,然后检索在 OUT 参数中返回的值.办法 getByte 从第一个 OUT 参数中取出 一个 Java 字节,而 getBigDecimal 从第二个 OUT 参数中取出一个 BigDecimal 对象(小数点背面带三位数):

CallableStatement cstmt = con.prepareCall("{call getTestData(?, ?)}");
cstmt.registerOutParameter(1, java.sql.Types.TINYINT);
cstmt.registerOutParameter(2, java.sql.Types.DECIMAL, 3);
cstmt.executeQuery();
byte x = cstmt.getByte(1);
java.math.BigDecimal n = cstmt.getBigDecimal(2, 3);

CallableStatement 与 ResultSet 差别,它不供利用增量方法检索大 OUT 值的特别机制.


  以上是“<b>JDBC底子教程之CallableStatement</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .