『Visual C#実践講座』 3章 その4 トランザクション処理

関連するテーブルの処理全体をトランザクションとして管理する。
データベースへの更新処理がすべて正常終了すれば「コミット」し、そうでなければ「ロールバック」する。
これをトランザクション処理という。


このように処理しないと、更新の途中で異常終了した時に不整合なデータが生じてしまい、システムに悪影響を及ぼしてしまう。


using(var _con = new SqlConnection(strConnection))
{
  _con.Open();

  using(var tran = _con.BeginTransaction())
  {
    try
    {
      // 更新処理
      tran.Commit();
    }
    catch
    {
      // ロールバック
      tran.Rollback();
    }
  }
}

SqlConnection クラス (System.Data.SqlClient)
http://msdn.microsoft.com/ja-jp/library/system.data.sqlclient.sqlconnection(VS.80).aspx
SqlConnection メンバ (System.Data.SqlClient)
http://msdn.microsoft.com/ja-jp/library/system.data.sqlclient.sqlconnection_members(VS.80).aspx
BeginTransaction, ChangeDatabase, Close, Open


System.Data.SqlClient 名前空間
http://msdn.microsoft.com/ja-jp/library/system.data.sqlclient(VS.80).aspx


ADO.NET でのデータへの接続およびデータの取得
http://msdn.microsoft.com/ja-jp/library/ms254937(VS.80).aspx



.NET Framework2.0からは次のように書ける

using(var tScope = new TransactionScope())
{
  // 更新処理

  // 更新処理がすべて正常終了すれば更新をコミットする。そうでなければ、ロールバックする。
  tScope.Complete();
}


10 行でズバリ !! TransactionScope の利用 (C#)
http://msdn.microsoft.com/ja-jp/events/dd253124.aspx
TransactionScope クラス (System.Transactions)
http://msdn.microsoft.com/ja-jp/library/system.transactions.transactionscope(VS.80).aspx
TransactionScope メンバ (System.Transactions)
http://msdn.microsoft.com/ja-jp/library/system.transactions.transactionscope_members(VS.80).aspx
Completeメソッドがメイン


System.Transactions 名前空間
http://msdn.microsoft.com/ja-jp/library/system.transactions(VS.80).aspx