java.sql.PreparedStatement 调用存储过程实例
时间: 2024-09-10 15:16:16 浏览: 29
`java.sql.PreparedStatement` 是 Java 中用于执行预编译 SQL 语句的一个接口,它可以用来提高数据库操作的性能和安全性。当你需要调用数据库中的存储过程时,可以使用 `PreparedStatement` 的 `execute()` 方法。以下是一个使用 `PreparedStatement` 调用存储过程的示例:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class CallableStatementExample {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立数据库连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名", "用户名", "密码");
// 预编译带有存储过程调用的SQL语句
String callProcSQL = "{CALL 存储过程名(参数1, 参数2)}";
pstmt = conn.prepareStatement(callProcSQL);
// 给存储过程的参数赋值
pstmt.setString(1, "参数值1"); // 假设第一个参数是字符串类型
pstmt.setInt(2, 参数值2); // 假设第二个参数是整型
// 执行存储过程
pstmt.execute();
// 处理存储过程的输出参数,如果有的话
// ...
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在这个例子中,我们首先通过 `Class.forName()` 加载数据库的 JDBC 驱动,并通过 `DriverManager.getConnection()` 建立数据库连接。然后,我们创建一个 `PreparedStatement` 对象,并通过 `prepareStatement` 方法传入带有存储过程调用的 SQL 语句模板。接着,我们通过 `setString` 和 `setInt` 方法给存储过程的参数赋值。最后,我们调用 `pstmt.execute()` 执行存储过程。