□投稿者/ 緑茶庵 (1回)-(2007/02/27(Tue) 14:35:19)
|
分類:[C# (Windows)]
DBのトランザクションに関するご質問です。
開発環境:VisualStadio2005(.NET2.0), WindowsXP
使用言語:C#
DBTransaction クラスを使用して
トランザクションの管理をしておりますが
DBへの処理途中でエラーで終了や意図的に終了した場合に(未COMMIT状態)
必ずRollBack処理を行う良い方法はありますでしょうか?
現在、下記の例のように
boolのフラグを設けて無理やり判定を行っておりますが
フラグを使わずにもう少しスッキリとした方法を探しております。
他言語ですが、DelphiのDB接続を管理するオブジェクト(TDataBase)の
InTransactionメソッド(トランザクション中の判定)のような
メソッドがDBTransactionにあれば・・と思ったのですが
DBTransaction クラスのメンバには
トランザクション中かどうかを判定するメソッド・プロパティは
無いようでした・・
よろしくお願いいたします。
-------例-------------------------------
*コネクションは既に存在するとする
//トランザクションの開始
using (DBTransaction trans = コネクション.BeginTransaction())
{
//トランザクション判定フラグ初期化
bool transFlg = false;
try
//////////////
//DBへの処理(DML)//
//省略//
//////////////
//コミット
trans.Commit;
//トランザクション判定フラグをtrue(コミット完了)に変更する
transFlg = true;
}
finally
{
//トランザクション判定フラグがfalse(未コミット)の場合はロールバックする
if (!transFlg)
{
trans.RollBack();
}
}
}
-----------------------------------
|
|