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

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

DDD
リリース: 2025-01-22 09:16:13
オリジナル
723 人が閲覧しました

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

Java の単一ステートメントを使用して複数のデータベース クエリを実行します

MySQL では、セミコロン (;) 区切り文字を使用して 1 つのステートメントで複数のクエリを実行できます。ただし、JDBC を使用して Java でこの操作を処理すると、デフォルトで例外がスローされる場合があります。

方法 1: 接続属性を使用する

複数のクエリの実行を有効にするには、接続を確立するときに allowMultiQueries 接続属性を指定できます。

<code class="language-java">String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";

Connection connection = DriverManager.getConnection(dbUrl, username, password);</code>
ログイン後にコピー

方法 2: ストアド プロシージャを使用する

あるいは、複数のクエリを含むストアド プロシージャを MySQL に作成することもできます。その後、CallableStatement を使用して Java からストアド プロシージャを呼び出すことができます。例は次のとおりです:

MySQL ストアド プロシージャ:

<code class="language-sql">CREATE PROCEDURE multi_query()
BEGIN
  SELECT COUNT(*) AS name_count FROM tbl_mq;
  INSERT INTO tbl_mq (name) VALUES ('ravi');
  SELECT LAST_INSERT_ID();
  SELECT * FROM tbl_mq;
END;</code>
ログイン後にコピー

Java コード:

<code class="language-java">CallableStatement cstmt = connection.prepareCall("{call multi_query()}");
boolean hasMoreResultSets = cstmt.execute();

while (hasMoreResultSets) {
  ResultSet rs = cstmt.getResultSet();
  // 处理结果集
  while (rs.next()) {
    // 处理每一行数据
  }
  hasMoreResultSets = cstmt.getMoreResults();
}</code>
ログイン後にコピー

複数のクエリを処理する

どちらのメソッドでも、Statement または CallableStatement オブジェクトの getResultSet() メソッドを使用して結果を反復できます。 getMoreResults() メソッドは true を返して、さらに処理する結果があることを示し、複数のクエリのすべての結果を確実に取得します。

注:

INSERT、UPDATE、DELETE などの DML (データ操作言語) ステートメントは結果セットを返さないため、個別に処理する必要があることに注意してください。 結果セットを処理するときは、必ず ResultSet オブジェクトと Statement オブジェクトを閉じてリソースを解放してください。 リソースを確実に自動的に閉じるには、try-with-resources ステートメントを使用することをお勧めします。

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

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