用java写一个调用SQL存储过程的demo
时间: 2023-07-18 10:47:26 浏览: 123
好的,下面是一个 Java 调用 SQL 存储过程的简单示例:
1. 首先需要连接到数据库,这里以 MySQL 数据库为例。
```java
import java.sql.*;
public class CallStoredProcedureDemo {
public static void main(String[] args) {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123456";
conn = DriverManager.getConnection(url, username, password);
System.out.println("连接成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
2. 创建 CallableStatement 对象,用来调用存储过程。
```java
CallableStatement cs = null;
String sql = "{ CALL 存储过程名(?, ?, ...) }";
try {
cs = conn.prepareCall(sql);
} catch (SQLException e) {
e.printStackTrace();
}
```
3. 对于存储过程的参数,可以通过 setXXX() 方法设置。这里以一个简单的存储过程为例,它接受两个参数并返回它们的和。
```sql
CREATE PROCEDURE add_two_numbers(IN a INT, IN b INT, OUT sum INT)
BEGIN
SET sum = a + b;
END
```
```java
cs.setInt(1, 10);
cs.setInt(2, 20);
cs.registerOutParameter(3, Types.INTEGER);
```
在这里,我们设置了两个输入参数 a 和 b,以及一个输出参数 sum。setInt() 方法用来设置输入参数的值,registerOutParameter() 方法用来注册输出参数的类型。
4. 执行存储过程,获取输出参数的值。
```java
try {
cs.execute();
int sum = cs.getInt(3);
System.out.println("sum = " + sum);
} catch (SQLException e) {
e.printStackTrace();
}
```
在这里,我们调用了 execute() 方法来执行存储过程,然后通过 getInt() 方法获取输出参数的值。
5. 最后需要关闭 CallableStatement 和 Connection 对象,释放资源。
```java
try {
if (cs != null) {
cs.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
```
注意:在实际的开发中,需要根据具体的存储过程进行调整,比如设置其他类型的参数、处理异常等等。
阅读全文