:::::[Transaction 이용하기]:::::
연결 객체의 BeginTransaction 메서드를 호출하면 Transaction이 시작된다.
Transaction의 작동순서 |
|
|
|
|
|
|
|
|
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 |