ホームページ  >  記事  >  データベース  >  Javaでmysqlストアドプロシージャを呼び出す方法

Javaでmysqlストアドプロシージャを呼び出す方法

PHPz
PHPzオリジナル
2023-04-19 14:12:231848ブラウズ

Java はオブジェクト指向プログラミング言語として、データベースと対話するための非常に一般的な操作であり、Mysql は業界で最も広く使用されているリレーショナル データベースの 1 つです。 Mysql では、ストアド プロシージャは、複数の SQL ステートメントを実行して結果を返す強力なプログラム単位です。 Java で Mysql のストアド プロシージャを呼び出すことも非常に一般的な操作です。次に、このプロセスの実装方法について詳しく見てみましょう。

1. Mysql ストアド プロシージャの作成

Mysql では、次のコマンドを使用してストアド プロシージャを作成できます:

CREATE PROCEDURE procedure_name [parameters]
BEGIN
   DECLARE local_variables;
   SQL_statements;
END;

このうち、procedure_name はストアド プロシージャの名前です。ストアド プロシージャの入力パラメータは、カンマで区切って 1 つ以上指定できます。 local_variables はストアド プロシージャで使用されるローカル変数であり、SQL_statements はストアド プロシージャによって実行されるすべての SQL ステートメントです。詳細については、Mysql の公式ドキュメントを確認してください。

2. Java で Mysql ストアド プロシージャを呼び出す手順

1. データベース接続の準備

Java で Mysql ストアド プロシージャを呼び出すには、まずデータベース接続を準備する必要があります。以下に示すように、JDBC を使用して Mysql 接続オブジェクトを取得できます。

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", "username", "password");

ここで、「com.mysql.jdbc.Driver」は Mysql のドライバー クラス名であることに注意してください。プロジェクトにインポートされていること。対応するドライバー jar パッケージが利用可能であること。

2. ストアド プロシージャを呼び出す

Java でストアド プロシージャを呼び出すには、ストアド プロシージャを呼び出すステートメント オブジェクトを表す CallableStatement を使用する必要があります。具体的な構文は次のとおりです:

CallableStatement cstmt = con.prepareCall("{call procedure_name(?, ?, ...)}");

その中で、procedure_name は呼び出されるストアド プロシージャの名前であり、括弧内はストアド プロシージャのパラメータ リストです。1 つ以上の疑問符を含めることができます。 、 カンマで区切られた。ストアド プロシージャに 2 つのパラメータがあると仮定すると、上記のステートメントは次のように変更する必要があります:

CallableStatement cstmt = con.prepareCall("{call procedure_name(?, ?)}");

3. パラメータの設定

ストアド プロシージャのパラメータ値を設定するには、setXX( ) メソッド。ここで、XX はデータのタイプを意味します。例:

cstmt.setInt(1, 123);
cstmt.setString(2, "hello");

最初のパラメータは 1 から始まるパラメータの位置を示し、2 番目のパラメータはパラメータの値です。

4. ストアド プロシージャを実行する

パラメータを設定した後、execute() メソッドを通じてストアド プロシージャを実行できます:

cstmt.execute();

execute() メソッドは戻り値を返します。ブール型 この値は、ストアド プロシージャが正常に実行されたかどうかを示します。

5. 結果の取得

ストアド プロシージャが結果を返す場合は、getResultSet() メソッドを通じて結果セットを取得できます:

ResultSet rs = cstmt.getResultSet();
while (rs.next()) {
   // 处理结果集
}

ストアド プロシージャが結果を返さない場合結果を返しますが、出力パラメータがある場合は、getXX() メソッドを通じて出力パラメータの値を取得できます。

int result = cstmt.getInt(1);

このうち、最初のパラメータはパラメータの位置を示します。

6. 接続を閉じます

最後に、忘れずにデータベース接続を閉じるようにしてください:

if (con != null) {
   con.close();
}

3. サンプル コード

以下は完全なサンプル コード。Java で Mysql のストアド プロシージャを呼び出す方法を示します。

import java.sql.*;

public class Main {
   public static void main(String[] args) {
      try {
         // 准备连接
         Class.forName("com.mysql.jdbc.Driver");
         Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database_name", "username", "password");

         // 调用存储过程
         CallableStatement cstmt = con.prepareCall("{call procedure_name(?, ?)}");

         // 设置参数
         cstmt.setInt(1, 123);
         cstmt.setString(2, "hello");

         // 执行存储过程
         boolean success = cstmt.execute();
         if (success) {
            // 处理结果集
            ResultSet rs = cstmt.getResultSet();
            while (rs.next()) {
               // 处理结果集
               int id = rs.getInt("id");
               String name = rs.getString("name");
            }
         } else {
            // 处理输出参数
            int result = cstmt.getInt(1);
         }

         // 关闭连接
         if (con != null) {
            con.close();
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

4. 注意事項

  1. Mysql ドライバーがロードされ、プロジェクトで使用できることを確認してください。
  2. ストアド プロシージャのパラメータは、in タイプの入力パラメータ、out タイプの出力パラメータ、または inout タイプの入出力パラメータにすることができます。
  3. ストアド プロシージャに出力パラメータがある場合、execute() メソッドを呼び出す前にパラメータの型を設定する必要があります。出力パラメータがない場合は、この項目を設定する必要はありません。
  4. ストアド プロシージャ、CallableStatement、および接続を実行した後閉じなければなりません。

以上がJavaでmysqlストアドプロシージャを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。