Transaction

이번 페이지에서는 SQL Server와 Oracle에서 트랜잭션을 처리하는 방법을 알아보겠습니다.
트랜잭션 실행에 필요한 함수는 총 3개가 있습니다.
	base.BeginTransaction();
	base.RollbackTransaction();
	base.CommitTransaction();
아래는 SQL Server에서 실행하는 간단한 트랜잭션 처리 방법입니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;

namespace BANANA.Web.Framework.Test.jmson
{
	public partial class Transaction_ : BANANA.Web.BasePage
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				try
				{
					// 트랜잭션 처리를 시작하고 싶다면, 간단한게 BeginTransaction 함수를 호출하세요.
					base.BeginTransaction();

					base.ExecuteNonQuery(
						"WSP_CUSTOMER_U1"
						, 3
						, "John"
						);

					DataTable _dt = base.GetDataTable(
						"WSP_CUSTOMER_R1"
						, 3
						);

					base.ExecuteNonQuery(
						"WSP_CUSTOMER_U1"
						, 5
						, _dt.Rows[0]["LastName"].ToString()
						);

					base.ExecuteNonQuery(
						"INSERT INTO CUSTOMERS (ID, FirstName) VALUES (7, '" + _dt.Rows[0]["FirstName"].ToString() + "');"
						);

					// 트랜잭션 처리를 commit하고 싶다면, CommitTransaction 함수를 호출하면 됩니다.
					base.CommitTransaction();
				}
				catch (Exception err)
				{
					// 오류가 발생하였다면, 트랜잭션을 roll back 처리해 주시면 됩니다.
					base.RollbackTransaction();

					MessageBox.Show(err.HelpLink + "<br />" + err.Message
						, "Error"
						, MessageBox.MessageBoxType.Alert
						, MessageBox.MessageBoxIcon.Error
						);
				}
			}
		}
	}
}
' 한 가지 주의하실 점은, 바나나 프레임워크의 트랜잭션은 데이터베이스의 Connection 기반으로 이루어 지기 때문에 SQL Server와 Oracle간의 이기종 트랜잭션은 지원하지 않습니다.

다음은 Oracle용 트랜잭션을 확인해 보겠습니다.
Oracle용 트랜잭션도 마찬가지로 base.BeginTransaction()과 base.CommitTransaction() 사이에 각종 데이터베이스 실행문을 입력하시면 됩니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;

namespace BANANA.Web.Framework.Test.jmson
{
	public partial class Transaction_ : BANANA.Web.BasePage
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				try
				{
					// 트랜잭션 처리를 시작하고 싶다면, 간단한게 BeginTransaction 함수를 호출하세요.
					base.BeginTransaction();

					// Input 파라미터를 Dictionary 개체 형식으로 추가해 줍니다.
					Dictionary<object, object> _dic1 = new Dictionary<object, object>();
					_dic1.Add("I_EMPLOYEEID", 3);
					_dic1.Add("I_FIRSTNAME", "John");

					base.ExecuteNonQuery(
						"PKG_EMPLOYEES.WSP_EMPLOYEES_U1"
						, _dic1
						);

					// Input 파라미터를 Dictionary 개체 형식으로 추가해 줍니다.
					Dictionary<object, object> _dic2 = new Dictionary<object, object>();
					_dic2.Add("I_EMPLOYEEID", 3);
					_dic2.Add("I_LASTNAME", "Kim");

					base.ExecuteNonQuery(
						"PKG_EMPLOYEES.WSP_EMPLOYEES_U2"
						, _dic2
						);

					// 트랜잭션 처리를 commit하고 싶다면, CommitTransaction 함수를 호출하면 됩니다.
					base.CommitTransaction();
				}
				catch (Exception err)
				{
					// 오류가 발생하였다면, 트랜잭션을 roll back 처리해 주시면 됩니다.
					base.RollbackTransaction();

					MessageBox.Show(err.HelpLink + "<br />" + err.Message
						, "Error"
						, MessageBox.MessageBoxType.Alert
						, MessageBox.MessageBoxIcon.Error
						);
				}
			}
		}
	}
}


지금까지 바나나 프레임워크에서 트랜잭션을 처리하는 방법을 알아 보았습니다

TOP