複数のトランザクションを同時に実行する
今回は複数のトランザクションを実行するJavaプログラミングをします。
一つのコードで複数のテーブルにデータを挿入するプログラムです。
では吟じます。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class SomeTran { /** * @param args */ public static void main(String[] args) { String url = "jdbc:mysql://localhost/test"; Connection con = null; try { String driver = "org.gjt.mm.mysql.Driver"; Class.forName(driver).newInstance(); } catch (Exception e) { System.out.println("Driverロードの失敗"); return; } try { Statement s; con = DriverManager.getConnection(url, "damePG", ""); //オートコミットをオフにする con.setAutoCommit(false); //1つ目の文の為にStatementする s = con.createStatement(); s.executeUpdate("INSERT INTO USER VALUE('" + args[0] + "','" + args[1] + "')"); //1つ目の文を閉じる s.close(); //2つ目の文の為にStatementする s = con.createStatement(); s.executeUpdate("INSERT INTO DATA VALUE('" + args[3] + "','" + args[4] + "','" + args[0] + "')"); //2つの文を同時にコミットする con.commit(); //2つ目の文を閉じる s.close(); } catch (SQLException e) { if (con != null) { try { //エラー発生時はロールバックする con.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } } e.printStackTrace(); } finally { if (con != null) { try { con.close(); } catch (Exception e) { e.printStackTrace(); } } } } }
詳細はコードのコメント通りです。
あると思います!!
確か昔に某M先輩のコードを写経したときもsetAutoCommit(false)を指定していた事を思い出しました。
もうすぐ10000アクセス到着だ!!うれしさのこみ上げるdamePGでした。