본문 바로가기

C#.NET

Transaction 이용하기

:::::[Transaction 이용하기]:::::

연결 객체의 BeginTransaction 메서드를 호출하면 Transaction이 시작된다.

Transaction의 작동순서

  1. 관련 Namespace 추가
  1. Try~ catch 구문 정의
  1. 연결문자열 생성
  1. SqlConnection 객체 생성 및 Open()
  1. SqlZConnection 객체의 BeginTransaction()메서드로 트랜잭션 시작
  1. 처리해야 할 SQL문 처리
  1. Commit() or Rollback()수행
  1. 연결 종료 Conn.Close()

 

Source

using System;

using System.Collections.Generic;

using System.Text;

 

//1.Namespace 추가

using System.Data;

using System.Data.SqlClient;

 

namespace TransactionEx

{

class Program

{

static void Main(string[] args)

{

//2.try catch 구문정의

try

{

string strConn = "server=localhost;database=mytest;integrated Security=true";

string strqry1="INSERT INTO executeNonQuery VALUES('이재명','0115553333')";

string strqry2="DELETE FROM executeNonQuery WHERE Name='마재윤'";

 

//3.SQLTransaction 객체생성

SqlTransaction trans;

 

//4.SqlConnection 객체생성및오픈

SqlConnection Conn=new SqlConnection(strConn);

Conn.Open();

 

//5.SqlZConnection 객체의BeginTransaction()메서드로트랜잭션시작

Console.WriteLine("여기서부터Transaction이시작됩니다.");

trans = Conn.BeginTransaction();

 

//SqlCommand 객체생성

SqlCommand comm1=new SqlCommand(strqry1,Conn);

SqlCommand comm2=new SqlCommand(strqry2,Conn);

 

comm1.Transaction=trans;

comm2.Transaction=trans;

 

//내부Try Catch 구문생성

try

{

comm1.ExecuteNonQuery();

comm2.ExecuteNonQuery();

Console.WriteLine("Commit 합니다");

trans.Commit();

}

catch(Exception s)

{

Console.WriteLine("트랜잭션처리중{0} 에러발생", s.ToString());

trans.Rollback();

}

 

}

catch (Exception e)

{

Console.WriteLine(e.ToString());

}

Console.ReadLine();

}

}

}

그림에서 살펴보듯 좌측이 위 Transaction을 시작하기 전으로 '마재윤'이 존재하는 것을 확인할 수 있다.

이제 Transaction을 수행하게 되면 오른쪽 결과값과 같이 '마재윤'은 삭제되고 '이재명'이 생성되어진 것을 확인할 수 있다.

 

 

 

'C#.NET' 카테고리의 다른 글

[:::::비연결 Database 접근방법:::::]  (0) 2009.05.15
OleDb를 이용한 DataBase연결  (0) 2009.05.14
DataBase Access 기술동향  (0) 2009.05.13
MSSQL LOCK  (0) 2009.05.13
:::::[트랜잭션(Transaction)]:::::  (0) 2009.05.13
Stored Procedure를 이용한 DB Handling  (1) 2009.05.13
클래스 소멸자와 Garbage Collector  (0) 2009.05.08
클래스 멤버로의 접근제한하기  (0) 2009.05.08
NotifyIcon  (0) 2009.05.08
트리뷰(TreeView)  (0) 2009.05.07