如何使用Java调用MySQL存储过程

来源:这里教程网 时间:2026-02-28 15:59:20 作者:

mysql 存储过程是一种用户自定义的函数,它将多个 sql 语句封装成一个单个的可重复执行的单元。调用存储过程能够提高数据库操作效率和安全性。java 作为应用程序开发的主流开发语言,能够很好地与 mysql 进行交互。在本文中,我们将学习如何使用 java 调用 mysql 存储过程。

    准备工作

在开始之前,我们需要确保以下两个方面的准备工作已经完成。

1.1 MySQL 数据库

首先,需要安装并配置 MySQL 数据库。可以在 MySQL 的官方网站上下载安装包,并按照官方文档进行安装和配置。

1.2 Java 开发环境

立即学习“Java免费学习笔记(深入)”;

其次,需要拥有 Java 开发环境,包括 JDK 和开发工具等。Java 开发工具有很多,可以选择 Eclipse、IntelliJ IDEA、NetBeans 等。本文将以 Eclipse 为例进行演示。

    创建 MySQL 存储过程

本文以一个简单的 MySQL 存储过程为例,该存储过程接收两个参数,将它们相加并返回结果。

首先登录 MySQL 数据库,使用以下语句创建一个名为 add_demo 的存储过程。

CREATE PROCEDURE add_demo (IN a INT, IN b INT, OUT c INT)
BEGIN
SET c = a + b;
END

运行以上语句后,MySQL 数据库中就创建了一个名为 add_demo 的存储过程。

    Java 调用 MySQL 存储过程

在 Java 中调用 MySQL 存储过程,通常需要使用 JDBC 的 CallableStatement 对象。

3.1 加载 JDBC 驱动

在 Java 中,需要通过 Class.forName() 方法加载 MySQL 驱动程序,代码如下:

Class.forName("com.mysql.jdbc.Driver");

3.2 连接 MySQL 数据库

使用 DriverManager 的 getConnection() 方法创建数据库连接对象,代码如下:

Connection conn = DriverManager.getConnection(url, username, password);

其中,url 是数据库的连接字符串,username 和 password 是连接数据库的用户名和密码。

3.3 创建 CallableStatement 对象

在连接数据库之后,需要创建一个 CallableStatement 对象来执行存储过程。代码如下:

CallableStatement cstmt = conn.prepareCall("{call add_demo(?,?,?)}");

其中,{call add_demo(?,?,?)} 是调用存储过程的语法。由于存储过程有三个参数,因此使用三个问号分别表示这三个参数。

3.4 设置参数

在创建 CallableStatement 对象之后,需要设置存储过程的参数值。代码如下:

cstmt.setInt(1, 1);
cstmt.setInt(2, 2);
cstmt.registerOutParameter(3, Types.INTEGER);

其中,setInt() 方法用于设置存储过程的前两个参数,registerOutParameter() 方法用于注册存储过程的第三个参数,该参数是一个输出参数,表示存储过程执行结果的返回值类型。

3.5 执行存储过程

设置参数之后,就可以执行存储过程了。代码如下:

cstmt.execute();

3.6 获取存储过程的执行结果

执行存储过程之后,需要获取存储过程的执行结果。代码如下:

int result = cstmt.getInt(3);

getInt() 方法用于获取存储过程的输出参数的值。

    完整示例代码

下面是一个完整的 Java 示例,展示如何调用 MySQL 存储过程。

import java.sql.*;
public class Demo {
  public static void main(String[] args) {
      String url = "jdbc:mysql://localhost:3306/test";
      String username = "root";
      String password = "123456";
      try {
          Class.forName("com.mysql.jdbc.Driver");
          Connection conn = DriverManager.getConnection(url, username, password);
          CallableStatement cstmt = conn.prepareCall("{call add_demo(?,?,?)}");
          cstmt.setInt(1, 1);
          cstmt.setInt(2, 2);
          cstmt.registerOutParameter(3, Types.INTEGER);
          cstmt.execute();
          int result = cstmt.getInt(3);
          System.out.println("Result: " + result);
      } catch (ClassNotFoundException | SQLException e) {
          e.printStackTrace();
      }
  }
}

参考文献

    [MySQL](https://www.mysql.com/)。 [JDBC](https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html)。

结论

Java 调用 MySQL 存储过程是一种常见的数据库操作方法。它能够提高数据库操作效率和安全性。在本文中,我们学习了如何创建 MySQL 存储过程,并使用 Java 来调用 MySQL 存储过程。这对于开发高效可靠的 Java 应用程序是至关重要的。

相关推荐