본문 바로가기

Development/C#

Transaction Test

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace TransactionTest
{
  class Program
  {
    static void Main(string[] args)
    {
      string conStr = "Server=localhost;user id=edicus;password=fpelchlrh;database=edicus";
      SqlTransaction trans;
      SqlConnection conn = new SqlConnection(conStr);
      conn.Open();
      
      Console.WriteLine("1. Transaction 시작");
      trans = conn.BeginTransaction();
      
      Console.WriteLine("2. SqlCommand 생성과 Transaction 설정");
      string sql1 = "insert into cusdec929A1 (rpt_no, rpt_seq) values ('1', '00')";
      string sql2 = "insert into cusdec929A1 (rpt_no, rpt_seq) values ('11111111111111111', '00')";
      
      SqlCommand comm1 = new SqlCommand(sql1, conn);
      SqlCommand comm2 = new SqlCommand(sql2, conn);
      
      try
      {
        comm1.Transaction = trans;
        comm2.Transaction = trans;
        
        comm1.ExecuteNonQuery();
        comm2.ExecuteNonQuery();
        trans.Commit();
      }
      catch
      {
        trans.Rollback(); 
      }
      finally
      {
        conn.Close();
      }
    }
  }
}