SQLを実行した結果によって、データベースの変更結果をコミットしたり、ロールバックしたり
するサンプルです。
以下のような一行のSQLの実行では意味がありませんが、複数行SQLを実行して、成功した場合だ
けデータベースを更新したい場合には以下のようにコミットとロールバックを使い分けます。
Connection con = データベースの接続は前の記事を参照してください。 boolean auto = false; //まずはオートコミットを向こうにしておく try { auto = con.getAutoCommit(); con.setAutoCommit(false); } catch (SQLException e) { e.printStackTrace(); } //SQLの実行結果 boolean ret = false; try { Statement state = con.createStatement(); String sql = "inesrt into testtable values(1, '名前')"; int n = state.executeUpdate(sql); if (n > 0) ret = true; state.close(); //コミットもしくはロールバックを実行する commit(con, auto, ret); } catch (SQLException e) { //失敗した場合はロールバックする commit(con, auto, false); e.printStackTrace(); }
|
以下のようにコミットとロールバックの制御は別関数にするとすっきりします。
public static void commit(Connection con, boolean auto, boolean ret) { try { if (auto) { if(ret == true) con.commit(); else con.rollback(); con.setAutoCommit(auto); } } catch (SQLException e) { e.printStackTrace(); } }
|