📜  Java CallableStatement接口(1)

📅  最后修改于: 2023-12-03 15:01:28.960000             🧑  作者: Mango

Java CallableStatement接口

简介

Java CallableStatement接口是一个Java数据库编程接口(API),用于执行存储过程或函数(即可调用的SQL语句)。与普通的PreparedStatement不同,CallableStatement可以返回更新的结果集。

CallableStatement接口继承了PreparedStatement接口。

方法

CallableStatement提供了许多方法,用于执行各种SQL任务。以下是一些最常用的方法:

registerOutParameter(int parameterIndex, int sqlType)

注册一个输出参数,用于存储存储过程或函数的返回值。

connection.prepareCall("{? = call my_function()}").registerOutParameter(1, Types.INTEGER);
execute()

执行一个存储过程或函数。

CallableStatement statement = connection.prepareCall("{call my_procedure()}");
statement.execute();
setXxx(int parameterIndex, Xxx value)

设置输入参数。

CallableStatement statement = connection.prepareCall("{call my_procedure(?)}");
statement.setInt(1, 42);
statement.execute();
getXxx(int parameterIndex)

获取输出参数。

CallableStatement statement = connection.prepareCall("{call my_procedure(?)}");
statement.registerOutParameter(1, Types.VARCHAR);
statement.execute();
String result = statement.getString(1);
示例

假设有以下存储过程:

CREATE PROCEDURE my_procedure(IN a INT, OUT b VARCHAR(20))
BEGIN
  SET b = CONCAT('Hello, ', CAST(a AS CHAR));
END

以下示例展示了如何使用CallableStatement调用存储过程,并获取结果:

CallableStatement statement = connection.prepareCall("{call my_procedure(?, ?)}");
statement.setInt(1, 42);
statement.registerOutParameter(2, Types.VARCHAR);
statement.execute();
String result = statement.getString(2); // result = "Hello, 42"
注意事项
  • CallableStatement只能用于调用存储过程或函数,不能用于执行普通的SQL查询语句;
  • 在注册输出参数之前必须先调用execute方法。