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

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

Barbara Streisand
リリース: 2024-12-21 09:50:13
オリジナル
618 人が閲覧しました

How Can I Execute Multiple SQL Queries in a Single Java Statement?

単一ステートメントでの Java での複数のクエリの実行

JDBC は通常、単一のステートメントで複数のクエリを実行しようとすると例外を発生させます。 MySQL のクエリ ブラウザで利用できる機能。ただし、この機能を容易にする 2 つのアプローチがあります。

アプローチ 1: 複数のクエリの構成

データベース URL で "allowMultiQueries" 接続プロパティを "true" に設定するセミコロンで区切られた複数のクエリを有効にします。これは接続リクエスト中に指定する必要があります。

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

「executeBatch」を使用する代わりに、「execute(String sql)」を使用してクエリの実行結果を取得します。結果を反復処理し、次の手順を使用して処理します。

boolean hasMoreResultSets = stmt.execute(multiQuerySqlString);
READING_QUERY_RESULTS:
while (hasMoreElementsResultSets || stmt.getUpdateCount() != -1) {
    if (hasMoreElementsResultSets) {
        ResultSet rs = stmt.getResultSet();
        // Handle result set here
    } else { // DDL/DML operation
        int queryResult = stmt.getUpdateCount();
        if (queryResult == -1) { // No more queries
            break READING_QUERY_RESULTS;
        }
        // Handle success, failure, or generated keys here
    }
    hasMoreElementsResultSets = stmt.getMoreResults();
}
ログイン後にコピー

アプローチ 2: カーソルを使用したスト​​アド プロシージャ

以下を含む複数のクエリを実行するストアド プロシージャを作成します。 select ステートメントと DML ステートメント。 「CallableStatement」を使用して Java からこのプロシージャを呼び出します。このアプローチにより、複数の ResultSet をキャプチャできます。ただし、DML 結果を直接キャプチャすることはできません。

CallableStatement cstmt = con.prepareCall("call multi_query()");
boolean hasMoreResultSets = cstmt.execute();
READING_QUERY_RESULTS:
while (hasMoreElementsResultSets) {
    ResultSet rs = stmt.getResultSet();
    // Handle result set here
}
ログイン後にコピー

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

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