汎用的なコードでトランザクション処理

C#

[この記事は18年前に書かれました]

汎用的なコードで、トランザクション処理を行うにはDbTransactionクラスを使用します。 正常に終了した場合は、Commit()、例外発生時はRollback()メソッドを呼びます。

using System.Configuration;
using System.Data.Common;
using System.Data;
...

ConnectionStringSettings setting = System.Configuration.ConfigurationManager.ConnectionStrings["OracleTest"];
DbProviderFactory factory = DbProviderFactories.GetFactory(setting.ProviderName);

using (DbConnection con = factory.CreateConnection())
{
  con.ConnectionString = setting.ConnectionString;
  con.Open();

  using (DbTransaction tran = con.BeginTransaction(IsolationLevel.Serializable))
  {
    try
    {
      using (DbCommand cmd = con.CreateCommand())
      {
        // トランザクションオブジェクトのセット
        cmd.Transaction = tran;

        cmd.CommandText = "insert into test(column1,column2) values('103','test')";
        int rows = cmd.ExecuteNonQuery();
      }

      // コミット
      tran.Commit();
    }
    catch
    {
      // 例外が発生した場合はロールバック
      tran.Rollback();
    }
    finally
    {
      if (con != null)
      {
        con.Close();
      }
    }
  }
}


(※).NET Framework version 2.0新機能

コメント

タイトルとURLをコピーしました