|
import java.sql.*;
public class BatchUpdateStd {
public static void main(String[] args) throws SQLException {
Connection con = null;
PreparedStatement stm = null;
try {
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
con = DriverManager.getConnection(
"jdbc:oracle:thin:@127.0.0.1:1521:ORCL","test","test");
// 自動コミットを無効にする。
con.setAutoCommit(false);
// PrepareStatement取得
stm = con.prepareStatement("insert into emp values (?,?,?,?)");
// 1レコード目のinsert
stm.setString(1,"E01"); // 列「emp_id」の値を設定
stm.setString(2,"D01"); // 列「dept_id」の値を設定
stm.setString(3,"なまえ1"); // 列「name」の値を設定
stm.setInt(4,100); // 列「salary」の値を設定
stm.addBatch(); // バッチ処理するSQLに追加
// 2レコード目のinsert
stm.setString(1,"E02"); // 列「emp_id」の値を設定
stm.setString(2,"D02"); // 列「dept_id」の値を設定
stm.setString(3,"なまえ2"); // 列「name」の値を設定
stm.setInt(4,130); // 列「salary」の値を設定
stm.addBatch(); // バッチ処理するSQLに追加
// 3レコード目のinsert
stm.setString(1,"E03"); // 列「emp_id」の値を設定
stm.setString(2,"D02"); // 列「dept_id」の値を設定
stm.setString(3,"なまえ3"); // 列「name」の値を設定
stm.setInt(4,200); // 列「salary」の値を設定
stm.addBatch(); // バッチ処理するSQLに追加
// 4レコード目のinsert
stm.setString(1,"E04"); // 列「emp_id」の値を設定
stm.setString(2,"D02"); // 列「dept_id」の値を設定
stm.setString(3,"なまえ4"); // 列「name」の値を設定
stm.setInt(4,200); // 列「salary」の値を設定
stm.addBatch(); // バッチ処理するSQLに追加
// 溜まっているバッチ更新を実行する。
stm.executeBatch(); // SQLの実行
// コミットする。
con.commit();
} catch (SQLException ex) {
// DBアクセスエラーの場合は、ロールバックする。
con.rollback();
} finally {
if ( stm != null ) {
// Statement クローズ
stm.close();
}
if ( con != null ) {
// コネクションクローズ
con.close();
}
}
}
} |