您可以使用 CallableStatement 接口调用 sql 存储过程。 Callable 语句可以具有输入参数、输出参数或两者。您可以使用 prepareCall() 创建 CallableStatement(接口)的对象> Conn
您可以使用 CallableStatement 接口调用 sql 存储过程。 Callable 语句可以具有输入参数、输出参数或两者。
您可以使用 prepareCall() 创建 CallableStatement(接口)的对象> Connection 接口的方法。此方法接受一个表示调用存储过程的查询的字符串变量,并返回一个 CallableStatement 对象。
假设您有一个过程名称 myProcedure 在数据库,您可以准备一个可调用语句:
//Preparing a CallableStatement
CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");
然后,您可以使用 CallableStatement 接口的 setter 方法为占位符设置值,并使用 execute() 方法执行可调用语句,如下所示。
cstmt.setString(1, "Raghav");
cstmt.setInt(2, 3000);
cstmt.setString(3, "Hyderabad");
cstmt.execute();
如果该过程没有输入值,您只需准备可调用语句并执行它,如下所示:
CallableStatement cstmt = con.prepareCall("{call myProcedure()}");
cstmt.execute();
假设 Mysql 数据库中有一个名为 Dispatches 的表,其中包含以下数据:
+--------------+------------------+------------------+----------------+
| Product_Name | Date_Of_Dispatch | Time_Of_Dispatch | Location |
+--------------+------------------+------------------+----------------+
| KeyBoard | 1970-01-19 | 08:51:36 | Hyderabad |
| Earphones | 1970-01-19 | 05:54:28 | Vishakhapatnam |
| Mouse | 1970-01-19 | 04:26:38 | Vijayawada |
+--------------+------------------+------------------+----------------+
如果我们创建了一个名为 myProcedure 的过程来从此表中检索值,如下所示:
Create procedure myProcedure ()
-> BEGIN
-> SELECT * FROM Dispatches;
-> END //
下面是一个使用 JDBC 程序调用上述存储过程的 JDBC 示例。
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class CallingProcedure {
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/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "passWord");
System.out.println("Connection established......");
//Preparing a CallableStateement
CallableStatement cstmt = con.prepareCall("{call myProcedure()}");
//Retrieving the result
ResultSet rs = cstmt.executeQuery();
while(rs.next()) {
System.out.println("Product Name: "+rs.getString("Product_Name"));
System.out.println("Date of Dispatch: "+rs.getDate("Date_Of_Dispatch"));
System.out.println("Time of Dispatch: "+rs.getTime("Time_Of_Dispatch"));
System.out.println("Location: "+rs.getString("Location"));
System.out.println();
}
}
}
Connection established......
Product Name: KeyBoard
Date of Dispatch: 1970-01-19
Time of Dispatch: 08:51:36
Location: Hyderabad
Product Name: Earphones
Date of Dispatch: 1970-01-19
Time of Dispatch: 05:54:28
Location: Vishakhapatnam
Product Name: Mouse
Date of Dispatch: 1970-01-19
Time of Dispatch: 04:26:38
Location: Vijayawada
--结束END--
本文标题: 如何在 JDBC 解释中使用可调用语句调用存储过程?
本文链接: https://www.lsjlt.com/news/437239.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0