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