ホームページ > データベース > mysql チュートリアル > 単一の JDBC ステートメントで複数のクエリを実行するにはどうすればよいですか?

単一の JDBC ステートメントで複数のクエリを実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-22 08:57:09
オリジナル
703 人が閲覧しました

How Can I Execute Multiple Queries in a Single JDBC Statement?

単一のステートメントで複数の JDBC クエリを効率的に実行する

JDBC は、単一のステートメント内で複数の SQL クエリを実行し、データベースの対話効率を高めるためのいくつかの方法を提供します。 1 つのアプローチには、allowMultiQueries 接続プロパティを利用することが含まれます。 この設定により、セミコロンで区切られた複数のクエリを 1 回の呼び出しで実行できます。

この機能を有効にするには、データベース URL に allowMultiQueries=true を含めます:

String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";
ログイン後にコピー

これを有効にすると、execute() メソッドは複数のクエリを処理できます。 例:

String multiQuerySqlString = "SELECT * FROM table1; INSERT INTO table2 VALUES (1, 'value1');";
boolean hasMoreResultSets = stmt.execute(multiQuerySqlString);
ログイン後にコピー

hasMoreResultSets ブール値は、さらに結果セットが存在することを示します。 必要に応じて結果を繰り返し処理します。

while (hasMoreResultSets || stmt.getUpdateCount() != -1) {
    if (hasMoreResultSets) {
        ResultSet rs = stmt.getResultSet();
        // Process ResultSet data here
    } else {
        int queryResult = stmt.getUpdateCount();
        // Handle Data Manipulation Language (DML) statement results
    }
    hasMoreResultSets = stmt.getMoreResults();
}
ログイン後にコピー

もう 1 つの効果的な手法には、複数のクエリを含むストアド プロシージャを作成することが含まれます。 このプロシージャは、CallableStatement を使用して呼び出すことができます。 結果は複数の ResultSet オブジェクトを介して取得されます。

String storedProcedure = "CALL multi_query()";
CallableStatement cstmt = con.prepareCall(storedProcedure);
boolean hasMoreResultSets = cstmt.execute();
while (hasMoreResultSets) {
    ResultSet rs = cstmt.getResultSet();
    // Process ResultSet data here
    hasMoreResultSets = cstmt.getMoreResults();
}
ログイン後にコピー

allowMultiQueries プロパティとストアド プロシージャは両方とも、単一の JDBC ステートメントを使用して複数のクエリを実行する効率的な方法を提供し、データベース操作を最適化します。

以上が単一の JDBC ステートメントで複数のクエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート