.NET

[C#] 트랜잭션 사용

tornado 2005. 6. 15. 10:45

1-1    SqlTransaction 을 이용한 방법

         

         

SqlConnection conn = new SqlConnection(커넥션 스트링);

conn.Open();

SqlTransaction transaction = new SqlTransaction();

SqlCommand command = new SqlCommand();

command.Transaction = transaction;

 

try{

    command.CommandText = insert into .;

    command.ExecuteNonQuery();

   

    command.CommandText = update xxx set …….. where ;

    command.ExecuteNonQuery();

   

    transaction.Commit();

}catch(Exception e){

    transaction.Rollback();

}finally{

    conn.Close();

}

 

 

1-2              Stored Procedure 를 이용하는 방법

트랜잭션이 발생하는 쿼리 묶음을 저장 프로시저로 만들고 호출한다.

 

1-3              System.EnterpriseServices 를 이용하는 방법(Com+)

 

.

using System.EnterpriseServices;

 

namespace . {

   

[Transaction(TransactionOption.Required)]

public class xxxx{

 

    public void addCart(int id ,

int productCode,

string productName,

int quantity)

    {

        SqlConnection conn;

        try{

                conn = new SqlConnection(접속문자열);

                SqlCommand command = new SqlCommand();

 

                command.CommandText = insert .;

                command.ExecuteNonQuery();

 

                command.CommandText = update ..;

                command.ExecuteNonQuery();

 

                ContextUtils.SetComplete();

  }catch(Exception e){

    ContextUtils.SetAbort();

  }finally{

    conn.close();

  }

}

}

}

 

 

개인적으로는 우리 DBA 가 저장프로시저 제대로 짜주면 1-2 로 하겠는데

쿼리를 나더러 짜라거나.. 하면 1-3 으로 가야겠다.

 

웹 개발에서 ASP.NET 은 정말 편리하고 빨리 개발할 수 있다는걸 또다시 절실히 느꼈다...

 

com+ 관련 옵션좀 찾아서 정리점 해놔야겠다....