BeginTransaction 과 rollback 사용하기

2008. 3. 31. 16:37 개발언어/C#.NET
2008/03/04 - [개발언어/C#.NET] - Transaction C# / ASP.NET에서 이용하기

http://www.bullog.net/Web/Columns/ReadColumn.aspx?ca=1&id=632238552484837500

예제가 참좋다.
구현하려는 기능도 이런건데... 데이타를 insert하다가 잘못되면 rollback하는 거다.



SqlTransaction 클래스를 이용하여 트랜잭션 적용하기
이제 SqlTransaction 클래스를 이용하여 웹 폼 페이지에서 데이터베이스 트랜잭션을 사용하는 방법을 간단한 예제를 통해 알아보도록 하겠습니다.


다음 예제는 pubs 데이터베이스의 authors 테이블에 트랜잭션을 이용하여 데이터를 추가하는 예제입니다.

1

<%@ Page Language="C#" %>

2

<%@ Import Namespace="System.Data.SqlClient" %>

3

<html>

4

        <head>

5

               <title>SqlTransaction class</title>

6

               <script language="C#" runat="server">

7

                       void Page_Load(object sender, EventArgs e) {

8

                              string connectString = "Server=localhost;Database=pubs;uid=sa;pwd=";

9

                              SqlConnection cn = new SqlConnection(connectString);

10

                             

11

                              string query = "INSERT authors VALUES ('111-11-1111', '', '길동', '111 111-1111', '송파구', '서울시', '', '11111', 0)";

12

                              SqlCommand cmd = new SqlCommand(query, cn);

13

                             

14

                              cn.Open();

15

                              SqlTransaction tran = cn.BeginTransaction();

16

                             

17

                              try {

18

                                      cmd.Transaction = tran;

19

                                      cmd.ExecuteNonQuery();

20

                                      tran.Commit();

21

                                      Response.Write("데이터가 추가되었습니다.");

22

                              }

23

                              catch (Exception ex){

24

                                      tran.Rollback();

25

                                      Response.Write("데이터를 추가하는 도중 오류가 발생했습니다.");

26

                              }

27

                              finally {

28

                                      tran.Dispose();

29

                                      cn.Close();

30

                              }

31

                       }

32

               </script>

33

        </head>

34

        <body>

35

        </body>

36

</html>


OracleTransaction.Rollback 메서드에 대한 msdn이다. 위와 비슷한 예제이다. 좋쿠나
http://msdn2.microsoft.com/ko-kr/library/system.data.oracleclient.oracletransaction.rollback(VS.80).aspx