您好,欢迎访问一九零五行业门户网

JDBC 中的 CallableStatement 是什么?

callablestatement 接口提供执行存储过程的方法。由于 jdbc api 提供了存储过程 sql 转义语法,因此您可以以单一标准方式调用所有 rdbms 的存储过程。
创建 callablestatement您可以创建 connection接口的preparecall()方法来调用strong>callablestatement(接口)。此方法接受一个表示调用存储过程的查询的字符串变量,并返回一个 callablestatement 对象。
callable 语句可以具有输入参数、输出参数或两者都有。要将输入参数传递给过程调用,您可以使用占位符并使用 callablestatement 接口提供的 setter 方法(setint()、setstring()、setfloat())为这些参数设置值。
假设您数据库中有一个名为 myprocedure 的过程,您可以准备一个可调用语句,如下所示:
//preparing a callablestatementcallablestatement cstmt = con.preparecall("{call myprocedure(?, ?, ?)}");
为输入参数设置值您可以使用 setter 方法为过程调用的输入参数设置值。
它们接受两个参数,其中一个是整数值表示输入参数的放置索引,另一个是 int 或、string 或、float 等…表示您需要传递的值向过程输入参数。
注意:除了索引之外,您还可以以字符串格式传递参数名称。
cstmt.setstring(1, "raghav");cstmt.setint(2, 3000);cstmt.setstring(3, "hyderabad");
执行 callable 语句创建 callablestatement 对象后,您可以使用 execute() 方法之一来执行它。
cstmt.execute();
示例假设 mysql 数据库中有一个名为 employee 的表,其中包含以下数据:
+---------+--------+----------------+| name | salary | location |+---------+--------+----------------+| amit | 30000 | hyderabad || kalyan | 40000 | vishakhapatnam || renuka | 50000 | delhi || archana | 15000 | mumbai |+---------+--------+----------------+
我们创建了一个名为 myprocedure 的过程来将值插入到该表中,如下所示:
create procedure myprocedure (in name varchar(30), in sal int, in loc varchar(45)) -> begin -> insert into employee(name, salary, location) values (name, sal, loc); -> end //
下面是一个 jdbc 示例,它使用可调用语句调用上面创建的过程,将新记录插入到 employee 表中。
import java.sql.callablestatement;import java.sql.connection;import java.sql.drivermanager;import java.sql.sqlexception;public class callablestatementexample { public static void main(string args[]) throws sqlexception { //registering the driver drivermanager.registerdriver(new com.mysql.jdbc.driver()); //getting the connection string mysqlurl = "jdbc:mysql://localhost/testdb"; connection con = drivermanager.getconnection(mysqlurl, "root", "password"); system.out.println("connection established......"); //preparing a callablestateement callablestatement cstmt = con.preparecall("{call myprocedure(?, ?, ?)}"); cstmt.setstring(1, "raghav"); cstmt.setint(2, 3000); cstmt.setstring(3, "hyderabad"); cstmt.setstring(1, "kalyan"); cstmt.setint(2, 4000); cstmt.setstring(3, "vishakhapatnam"); cstmt.setstring(1, "rukmini"); cstmt.setint(2, 5000); cstmt.setstring(3, "delhi"); cstmt.setstring(1, "archana"); cstmt.setint(2, 15000); cstmt.setstring(3, "mumbai"); cstmt.execute(); system.out.println("rows inserted ...."); }}
输出connection established......rows inserted ....
如果使用 select 查询检索 employee 表的内容,您可以观察到新添加的记录,如下所示:
mysql> select * from employee;+---------+--------+----------------+| name | salary | location |+---------+--------+----------------+| amit | 30000 | hyderabad || kalyan | 40000 | vishakhapatnam || renuka | 50000 | delhi || archana | 15000 | mumbai || raghav | 3000 | hyderabad || raghav | 3000 | hyderabad || kalyan | 4000 | vishakhapatnam || rukmini | 5000 | delhi || archana | 15000 | mumbai |+---------+--------+----------------+9 rows in set (0.00 sec)
以上就是jdbc 中的 callablestatement 是什么?的详细内容。
其它类似信息

推荐信息