次の例では、addBatch および executeBatch コマンドを使用して、複数のSQLコマンドを同時に実行します。
バッチ処理を使用すると、関連する SQL ステートメントをバッチにグループ化し、データベースへの 1 回の呼び出しでそれらを送信できます。参照
一度に複数の SQL ステートメントをデータベースに送信すると、通信オーバーヘッドの量が減るため、パフォーマンスが向上します。
- この機能をサポートするために JDBC ドライバーは必要ありません。メソッドを使用して
DatabaseMetaData.supportsBatchUpdates()
、ターゲット データベースがバッチ更新処理をサポートしているかどうかを判断する必要があります。JDBC ドライバーがこの機能をサポートしている場合、このメソッドは true を返します。
- Statement、PreparedStatement、および CallableStatementのaddBatch ()メソッドを使用して、個々のステートメントをバッチに追加します。は
executeBatch()
、グループ化されたすべてのステートメントの実行を開始するために使用されます。
- executeBatch ()は整数の配列を返し、配列の各要素はそれぞれの更新ステートメントの更新カウントを表します。
- バッチにステートメントを追加して処理できるように、clearBatch ()メソッドを使用してステートメントを削除できます。このメソッドは、メソッドで追加したすべてのステートメントを削除します
addBatch()
。ただし、削除するステートメントを選択的に選択することはできません。
例:
import java.sql.*;
public class jdbcConn {
public static void main(String[] args) throws Exception{
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con = DriverManager.getConnection
("jdbc:derby://localhost:1527/testDb","name","pass");
Statement stmt = con.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String insertEmp1 = "insert into emp values
(10,'jay','trainee')";
String insertEmp2 = "insert into emp values
(11,'jayes','trainee')";
String insertEmp3 = "insert into emp values
(12,'shail','trainee')";
con.setAutoCommit(false);
stmt.addBatch(insertEmp1);//inserting Query in stmt
stmt.addBatch(insertEmp2);
stmt.addBatch(insertEmp3);
ResultSet rs = stmt.executeQuery("select * from emp");
rs.last();
System.out.println("rows before batch execution= "
+ rs.getRow());
stmt.executeBatch();
con.commit();
System.out.println("Batch executed");
rs = stmt.executeQuery("select * from emp");
rs.last();
System.out.println("rows after batch execution= "
+ rs.getRow());
}
}
http://www.tutorialspoint.com/javaexamples/jdbc_executebatch.htmを参照してください