ADO.NET: 데이터베이스 트랜잭션 사용
출처: 인터넷
ADO.NET: 데이터베이스 트랜잭션 사용
데이터베이스 트랜잭션은 데이터베이스에 대한 데이터 커밋을 제어하는 데 사용됩니다. 예를 들어, 표준 계좌 프로시저의 경우에는 입출금 계좌에서 동시에 입출금이 발생해야 합니다. 하지만 정전이나 네트워크 오류 등으로 인해 컴퓨터가 중단될 경우, 한 레코드만 업데이트되거나 추가될 가능성이 있습니다. 이러한 상황을 방지하기 위해 트랜잭션이 사용됩니다. ADO.NET의 트랜잭션은 ADO에서처럼 데이터베이스 수준에서 처리되므로 데이터베이스에서 트랜잭션을 지원해야 합니다.
트랜잭션에 대한 세 가지 기본 명령에는 BeginTransaction, Commit 및 Rollback이 있습니다. BeginTransaction은 트랜잭션 시작을 표시합니다. BeginTransaction과 다음 명령인 Rollback 또는 Commit 사이에 발생되는 모든 것은 트랜잭션의 일부로 간주됩니다. 다음 코드 예제에서는 트랜잭션을 사용하는 방법을 보여 줍니다.
SqlConnection myConnection = new SqlConnection("server=(local)\\VSdotNET;Trusted_Connection=yes;database=northwind");
SqlCommand myCommand = new SqlCommand();
SqlTransaction myTrans;
// Open the connection.
myConnection.Open();
// Assign the connection property.
myCommand.Connection = myConnection;
// Begin the transaction.
myTrans = myConnection.BeginTransaction();
// Assign transaction object for a pending local transaction
myCommand.Transaction = myTrans;
try
{
// Restore database to near its original condition so sample will work correctly.
myCommand.CommandText = "DELETE FROM Region WHERE (RegionID = 100) OR (RegionID = 101)";
myCommand.ExecuteNonQuery();
// Insert the first record.
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'MidWestern')";
myCommand.ExecuteNonQuery();
// Insert the second record.
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'MidEastern')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both Records are written to the database!");
}
catch(Exception e)
{
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record is written to the database!");
}
finally
{
myConnection.Close();
}
'IT-개발,DB' 카테고리의 다른 글
[개발/VC++] CreateProcess 함수 예제 소스코드 (0) | 2016.02.04 |
---|---|
insert 시 null값에 관한 질문입니다 (0) | 2016.01.25 |
[javascript] 문서내의 특정 단어를 한꺼번에 찾아 배경색을 다르게 표시하기 (0) | 2016.01.18 |
[개발/VCL] 델파이 영상처리 VCL Sobakcc Lab v1.15 (0) | 2016.01.16 |
[개발/VCL] 델파이 영상처리 VCL Sobakcc Lab (0) | 2016.01.16 |
댓글