mysql存储过程boolean_MySQL中使用存储过程[转]

import java.sql.CallableStatement;

...

//

// Prepare a call to the stored procedure 'demoSp'

// with two parameters

//

// Notice the use of JDBC-escape syntax ({call ...})

//

CallableStatement cStmt = conn.prepareCall("{call demoSp(?, ?)}");

cStmt.setString(1, "abcdefg");

Connection.prepareCall()方法非常消耗资源,因为jdbc驱动通过元数据(metadata)的获取支持输出参数.出于执行效率的考虑,应该尽可能减少不必要的prepareCall调用,重用CallableStatement对象.

2.注册输出参数(如果有的话)

要得到输出参数的值(创建存储过程时设置的OUT和INOUT),JDBC要求这些参数必须要在数据库操作执行之前通过registerOutputPrameter()方法设置.

import java.sql.Types;

...

//

// 下面给出了设置输出参数的几个方法

//

// 注册第二个参数为输出参数

//

cStmt.registerOutParameter(2);

//

// 注册第二个参数为输出参数,设定getObject得到的返回值的类型为整型

//

cStmt.registerOutParameter(2, Types.INTEGER);

//

// 注册名为"inOutParam"的参数为输出参数

//

cStmt.registerOutParameter("inOutParam");

//

// 注册名为"inOutParam"的参数为输出参数,设定getObject得到的返回值的类型为整型

//

cStmt.registerOutParameter("inOutParam", Types.INTEGER);

3.设置输入参数(如果有的话)

类似PreparedStatement的设置参数方法.

// 设置第一个参数值

//

cStmt.setString(1, "abcdefg");

//

// 根据名字设置参数值

//

cStmt.setString("inputParameter", "abcdefg");

//

// 根据索引值设置输入/输出参数

//

cStmt.setInt(2, 1);

//

// 根据参数名设置输入/输出参数

//

//

cStmt.setInt("inOutParam", 1);

...

4.执行CallableStatement,获取结果集合或输出参数

尽管CallableStatement支持Statement接口的所有执行方法(executeUpdate(),executeQuery()或execute()),最具伸缩性的方法是execute(),因为你不需要知道是否这个存储过程返回结果集合.

...

boolean hadResults = cStmt.execute();

//

// 处理返回的结果集合

//

while (hadResults) {

ResultSet rs = cStmt.getResultSet();

//

...

hadResults = cStmt.getMoreResults();

}

//

// 获取输出参数,通过索引值或参数名

//

//

int outputValue = cStmt.getInt(1);

outputValue = cStmt.getInt("inOutParam");

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-05-23 13:20

浏览 909

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值