VB.NET 2008/VB - 데이터 액세스

데이터베이스 액세스 - 트랜잭션 처리 방법

본클라쓰 2011. 4. 28. 10:06

 

트랜잭션은 여러 작업을 함께 바인딩한다.

 

예를 들어 응용 프로그램이 두 가지 작업을 수행한다고 가정한다. 먼저 데이터베이스에 새 테이블을 만든다. 그런 다음 특수 개체를 호출하여 데이터를 수집하고 형식을 지정하여 새 테이블에 삽입한다. 데이터를 채울 수 없는 경우 새 테이블을 만들지 않으려고 한다는 점에서 두 작업은 서로 관련이 있고 상호 종속적이다. 단일 트랜잭션 범위 내에서 두 작업을 실행하면 두 작업 간의 연결이 적용된다. 두 번째 작업이 실패하면 첫 번째 작업이 새 테이블을 만들기 전의 지점으로 롤백된다.

 

 

비주얼 베이직 2008에서 트랜잭션을 처리하기 위해서는 SqlTransaction 개체에 SqlConnection 개체의 BeginTransaction() 메소드를 호출하여 할당한 후 각각의 SqlCommand 개체의 Transaction 속성에 SqlTransaction 개체를 할당하는 방식으로 처리합니다.

 

Using Connection As New SqlClient.SqlConnection(ConnStr)

 

    Dim Tran As SqlClient.SqlTransaction

    Dim Command As SqlClient.SqlCommand

    Dim reader AS SqlClient.SqlDataReader

    Dim result As Integer

 

    Connection.Open()

    Tran = Connection.BeginTransaction()

 

    Try

        Command = new SqlClient.SqlCommand(CheckQuery.ToString, Connection)

        Command.Transaction = Tran

        reader = Command.ExecuteReader()

        ' 조회 결과가 있다면 Rea() 메소드는 True를 출력합니다. 없다면 False를 출력합니다.

        Dim HasRecord As Boolean = reader.Read()

        reader.Close()

        ' 하나의 Command 개체를 사용할 때는 해당 명령어의 결과셋을 담은 Reader 개체를 닫은 후에 사용할 수 있습니다.

        ' 조회 결과가 없다면 행을 삽입합니다.

        If(HasRecord = False) Then

            Command = New SqlClient.SqlCommand(InsertQuery.ToString, Connection)
            Command.Transaction = Tran
            result = Command.ExecuteNonQuery()
        End If

 

        Tran.Commit()
    Catch ex As Exception
        Tran.Rollback()
    End Try

   

End Using