CallableStatement对象的创建:con.prepareCall(SQL语句)
CallableStatement对象特点
- 多使用execute()执行
- 执行SQL的存储过程
CallableStatement对象的参数
- IN:创建SQL语句时其参数值是未知的。 使用setXXX()方法将值绑定到IN参数。
- OUT:由SQL语句返回的参数值。 可以使用getXXX()方法从OUT参数中检索值。
- INOUT:提供输入和输出值的参数,使用setXXX()方法绑定变量并使用getXXX()方法检索值。 需要使用registeroutParameter(),声明输出参数类型
ackage cn.woniuxueyuan.mysqldemo;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
/**
* 存储过程调取,
* 使用prepareCall获取CallableStatement实例,
* registerOutParameter声明注册输入参数的类型
*/
public class CallableStatementDemo {
public static void CallAbleDemo() {
Connection con = msyqlTest.ConDemo();
/* 存储过程执行 */
String sql = "{call pro_test(?,?)}";
/* 常见预编译状态 */
CallableStatement state = null;
String ps = null;
try {
state = con.prepareCall(sql);
/* 设置参数 */
state.setString(1, "q");
/* 声明存储过程返回值的参数类型 */
state.registerOutParameter(2, java.sql.Types.VARCHAR);
/* 执行,返回boolean,表明是否有返回集,存储过程多实用execute执行 */
state.execute();
/*获取返回值*/
ps = state.getString(2);
System.out.println(ps);
} catch (SQLException e) {
e.printStackTrace();
} finally {
/*关闭资源*/
try {
state.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}