ストアドプロシージャをJavaから呼び出す例を2つご紹介します。

演習で実施した例

package p08;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class SelectStoredProcedure {

    public static final String CONNECT_STRING = "jdbc:mysql://localhost:3306/sip_a?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B9&rewriteBatchedStatements=true";
    public static final String USERID = "newuser";
    public static final String PASSWORD = "0";
    public static final String SQL = "call sip_a.get_cars_custmers(?)";

    public static Connection con = null;
    public static PreparedStatement ps = null;
    public static ResultSet rs = null;

    public static void main(String[] args) {

        try {
            con = DriverManager.getConnection(CONNECT_STRING, USERID, PASSWORD);
            System.out.println("データベースへの接続に成功しました。");

            System.out.println("車の名前を指定してください");

            Scanner sc = new Scanner(System.in);
            String carsName = sc.nextLine();

            sc.close();

            ps = con.prepareStatement(SQL);
            
            ps.setString(1, carsName);
            
            System.out.println(SQL);

            rs = ps.executeQuery();

            while (rs.next()) {
                System.out.print(rs.getString("customers.name") + ":");
                System.out.print(rs.getString("cars.name") + ":");
                System.out.print(rs.getString("price") + ":");
                System.out.print(rs.getString("saled_at"));
                System.out.println();
            }
        } catch (SQLException e) {
            System.err.println("データベースへの接続時に問題が発生しました。");
        } finally {
            try {
                if (ps != null) {
                    ps.close();
                }
                if (con != null) {
                    con.close();
                }
                System.out.println("データベースからの切断に成功しました。");
            } catch (SQLException e) {
                System.err.println("データベースからの切断時に問題が発生しました。");
            }
        }
    }
}

一般的な呼び出し例

import java.sql.*;

public class StoredProcedureExample {
    public static void main(String[] args) {
        // データベース接続情報
        String url = "jdbc:mysql://localhost:3306/database_name";
        String username = "your_username";
        String password = "your_password";
        
        // ストアドプロシージャの名前
        String procedureName = "procedure_name";
        
        try (Connection connection = DriverManager.getConnection(url, username, password)) {
            // ストアドプロシージャを呼び出すための準備
            String callProcedure = "{ call " + procedureName + "() }";
            CallableStatement statement = connection.prepareCall(callProcedure);
            
            // ストアドプロシージャの実行
            statement.execute();
            
            // 結果の取得
            // (ストアドプロシージャが結果を返す場合、ここで結果を処理する)
            
            // ステートメントと接続のクローズ
            statement.close();
            connection.close();
            
            System.out.println("ストアドプロシージャの実行が完了しました。");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

最後までお読みいただきありがとうございます。