10bet网址
MySQL连接器/ J 5.1开发者指南
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 0.6 mb
PDF (A4)- 0.6 mb


MySQL连接器/ J 5.1开发者指南/JDBC的概念/使用JDBC callablestatement执行存储过程

使用JDBC 6.3callablestatement执行存储过程

从MySQL服务器5.0版在使用连接器/ J 3.1.1或更新java.sql.CallableStatement接口是完全实现的异常getParameterMetaData ()方法。

在MySQL存储过程的更多信息,请参阅使用存储的例程

连接器/ J暴露通过JDBC的存储过程的功能CallableStatement接口。

请注意

当前版本的MySQL服务器不返回结果集JDBC驱动程序提供足够的信息元数据可调用语句。这意味着,当使用CallableStatement,ResultSetMetaData可能会返回

下面的示例显示了一个存储过程返回的值inOutParam增加了1,使用传入的字符串inputParam作为一个结果集:

示例6.3连接器/ J:调用存储过程

创建过程demoSp(在inputParam VARCHAR (255), \ INOUT inOutParam INT)开始宣布z INT;设置z = inOutParam + 1;设置inOutParam = z;选择inputParam;选择CONCAT (zyxw, inputParam);结束


使用demoSp过程与连接器/ J,遵循这些步骤:

  1. 可调用语句使用做好准备Connection.prepareCall ()

    请注意,您必须使用JDBC转义语法,和周围的括号参数占位符不是可选:

    示例6.4连接器/ J:使用Connection.prepareCall ()

    进口java.sql.CallableStatement;…/ / / /准备调用存储过程“demoSp”与两个参数/ / / / / /注意JDBC-escape语法的使用({…})/ / CallableStatement cStmt = conn.prepareCall(“{叫demoSp (?,)}”);cStmt。setString(1,“英语字母”);

    请注意

    Connection.prepareCall ()是一个昂贵的方法,由于司机执行支持的元数据检索输出参数。由于性能的原因,减少不必要的调用Connection.prepareCall ()通过重用CallableStatement代码中的实例。

  2. 寄存器的输出参数(如果存在)

    检索的值指定为输出参数(参数INOUT当你创建的存储过程)、JDBC要求他们使用各种被指定在执行语句之前registerOutputParameter ()方法CallableStatement接口:

    示例6.5连接器/ J:注册输出参数

    进口java.sql.Types;…/ / / /连接器/ J支持命名和索引/ /输出参数。你可以注册输出/ /参数使用方法,/ /因为检索输出参数使用/ /方法,不管什么方法/ /用于注册。/ / / /下面的例子展示如何使用/ /注册/ /输出参数的各种方法(当然你应该/ /每个参数只使用一个注册)。/ / / / / /注册第二个参数作为输出,和/或使用的整数类型的值/ / getObject () / / cStmt归来。Types.INTEGER registerOutParameter (2);/ / / /注册命名参数“inOutParam”,和/或使用的整数类型的值/ / getObject () / / cStmt归来。registerOutParameter (“inOutParam”, Types.INTEGER);…


  3. 设置输入参数(如果存在)

    输入/输出参数设置为PreparedStatement对象。然而,CallableStatement还支持设置参数的名字:

    示例6.6连接器/ J:设置CallableStatement输入参数

    …/ / / /设置一个参数通过索引/ / cStmt。setString(1,“英语字母”);/ / / /或者,设置一个参数使用/ / / / cStmt参数名称。setString (“inputParam”、“英语字母”);/ / / / /设置”“使用索引/ / cStmt参数。setInt (2, 1);/ / / /或者,设置“在/参数/ /名称/ / cStmt。setInt (" inOutParam ", 1);…


  4. 执行CallableStatement和检索结果集或输出参数。

    虽然CallableStatement支持调用的任何声明执行方法(executeUpdate (),executeQuery ()execute ()),最灵活的方法调用execute (),你不需要知道提前如果存储过程返回结果集:

    示例6.7连接器/ J:检索结果和输出参数值

    …布尔hadResults = cStmt.execute ();/ / / / / /同时处理所有返回结果集(hadResults) {ResultSet rs = cStmt.getResultSet ();/ /处理结果集…hadResults = cStmt.getMoreResults ();}/ / / / / / / /连接器/检索输出参数J同时支持基于索引和基于名称/ /检索/ / int outputValue = cStmt.getInt (2);/ /基于索引outputValue = cStmt.getInt (“inOutParam”);/ /基于名称…