■No1537 (HIRO さん) に返信 > 2007/02/27(Tue) 14:51:29 編集(投稿者) > > ■No1535 (緑茶庵 さん) に返信 >>DBへの処理途中でエラーで終了や意図的に終了した場合に(未COMMIT状態) > > エラー発生時のRollBackなら > catchの中で行えば良いのではないでしょうか? > > tryに対応するcatchが無いのは何か意図していますか? > > 下記はVB.NETですが参考になるかと思います > http://www.microsoft.com/japan/msdn/thisweek/step7/ADONET_Transaction/ HIRO さん ご返信をありがとうございます。 catch を使用しなかったのは例外発生時以外に 意図的に終了する場合があるためでした。 try //DML文処理1(省略) int execCount = コマンド.execNonQuery(); if (execCount == 0) { MessageBox.Show("更新件数が0件のため処理を中止します"); return; } //DML文処理2(省略) //コミット trans.Commit(); finally { //ロールバック処理(省略) } ただ、この処理のようにCommitを行う前にreturnを行った場合でも DBConnectionのお陰なのか、実際にDBへの更新は行われませんでした。 finallyでロールバック処理を書いたのは 保険の意味あいがとても強く、Commitしていない処理は とにかく全てロールバック処理を行いたかったからです。 *return の前にロールバックを書いても良いかも知れませんが 書き忘れもあるのでやりたくありません commitせずに且つcatch を通らない処理を行う場合は 普通どうされているのでしょうか? ロールバックを書かないのが普通なのでしょうか? 逆に catch句では遭えてロールバックを行っているので ロールバックを行わないのは不安です。。 勉強不足で申し訳ございませんが よろしくお願いいたします。
- Child Tree -