JDBC を使用した単一ステートメント内の複数のクエリ
JDBC を使用すると、単一のオペレーションで複数の SQL ステートメントを実行できます。これは、複数の独立したアクションを実行する必要がある場合、または 1 つのトランザクション内で複数のテーブルを更新する必要がある場合に役立ちます。
サンプル コード:
次のサンプル コードを考えてみましょう。これは、あなたが言及した MySQL クエリの動作をエミュレートします:
String sqlQuery = "SELECT * FROM TABLE; INSERT INTO TABLE;"; Statement statement = connection.createStatement(); statement.execute(sqlQuery);
方法 1: 接続Property
単一のステートメントで複数のクエリを実行できるようにするには、allowMultiQueries 接続プロパティを true に設定します。これは、セミコロンで区切られた複数のクエリの実行を許可するように JDBC ドライバーに指示します。
String url = "jdbc:mysql://localhost:3306/databaseinjection?allowMultiQueries=true"; Connection connection = DriverManager.getConnection(url, sqlUsername, sqlPassword);
方法 2: ストアド プロシージャ
または、ストアド プロシージャを作成することもできます。データベース内で複数のクエリをカプセル化します。次に、CallableStatement を使用して Java からストアド プロシージャを呼び出します。これにより、プロシージャによって返された複数の ResultSet オブジェクトをキャプチャできるようになります。
// Create a stored procedure String storedProcedure = "CREATE PROCEDURE multi_query() BEGIN SELECT * FROM TABLE; INSERT INTO TABLE; END;"; // Call the stored procedure CallableStatement cstmt = connection.prepareCall("{call multi_query()}"); cstmt.execute(); // Retrieve result sets while (cstmt.getMoreResults()) { ResultSet resultSet = cstmt.getResultSet(); // Handle the result set here }
複数のクエリの利点:
注:
以上が単一の JDBC ステートメントで複数の SQL ステートメントを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。