ホームページ >データベース >mysql チュートリアル >Javaでmysqlストアドプロシージャを呼び出す方法
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. 注意事項
以上がJavaでmysqlストアドプロシージャを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。