Development
                BeginTrans, CommitTrans, RollbackTrans 메서드
               
              
                Blue*
                 2006. 4. 26. 15:52
              
                          
            Connection 개체의 메서드
| 메서드 | 설명 | 
| BeginTrans | 진행 중인 명령(Command)의 실행을 중단한다. | 
| Cancel | 진행 중인 명령(Command)의 실행을 중단한다. | 
| Close | 활성화된 Connection 개체를 닫는다. | 
| CommitTrans | 활성화된 Connection 개체에서 현재의 트랜잭션을 Commit한다. | 
| Execute | 명령을 실행한다. 만약 Recordset이 반환된다면, 디폴트 Recordset 개체로 반환된다. | 
| Open | Connection 개체를 데이터 소스에 연결한다. | 
| OpenSchema | Recordset 개체의 스키마 정보를 반환한다. | 
| RollbackTrans | 활성화된 Connection 개체에서 현재의 트랜잭션을 Rollback 한다. | 
BeginTrans, CommitTrans, RollbackTrans 메서드
이 세개의 메서드는 트랜잭션을 관리하는 메서드이다. BeginTrans 메서드는 새로운 트랜잭션을 시작하며, CommitTrans 메서드는 시작된 트랜잭션의 변경된 내용을 저장하고 트랜잭션을 종료시킨다. RollbackTrans 메서드는 시작된 트랜잭션 동안에 변경된 내용을 취소하고 트랜잭션을 종료시킨다.
이 세 메서드는 다음과 같은 구문을 사용한다.
adoCn.BeginTrans
adoCn.CommitTrans
adocn.RollbackTrans
BeginTrans, CommitTrans, RollbackTrans 메서드는 CusorLocation이 클라이언트인 Connection 개체에서는 작동하지 않는다.
[예제 1]
다음 예제는 Pubs 데이터베이스의 Titles 테이블의 Type 필드의 값이 "psychology"인 필드의 값을 "self_help"로 변경한 후, 코드의 마지막에서 트랜잭션을 Rollback 하는 예이다.
| Private Sub cmdBeginTrans_Click()
 Dim adoCn As New ADODB.Connection
 
 Dim adoRs As New ADODB.Recordset
 
 Dim strConn As String
 
 
 
 strConn = "Provider=sqloledb;" & _
 
 "Data Source=(local);Initial Catalog=Pubs;User ID=sa;Password=; "
 
 
 
 adoCn.Open strConn
 
 
 
 adoRs.Open "Titles", adoCn, adOpenKeyset, adLockOptimistic, adCmdTable
 
 
 
 adoCn.BeginTrans
 
 
 
 ' Type이 "psychology" 이면 "self_help"로 변경한다.
 
 Do Until adoRs.EOF
 
 If Trim(adoRs!Type) = "psychology" Then
 
 adoRs!Type = "self_help"
 
 adoRs.Update
 
 End If
 
 
 
 adoRs.MoveNext
 
 Loop
 
 
 
 ' 데이터베이스로부터 다시 Recordset의 내용을 가져온다.
 
 adoRs.Requery
 
 
 
 adoRs.MoveFirst
 
 
 
 Do While Not adoRs.EOF
 
 Debug.Print adoRs!Title & " - " & adoRs!Type
 
 adoRs.MoveNext
 
 Loop
 
 
 
 ' 모든 변경 작업을 취소한다.
 
 adoCn.RollbackTrans
 
 
 
 adoRs.Requery
 
 
 
 adoRs.MoveFirst
 
 
 
 Do While Not adoRs.EOF
 
 Debug.Print adoRs!Title & " - " & adoRs!Type
 
 adoRs.MoveNext
 
 Loop
 
 
 
 adoRs.Close
 
 Set adoRs = Nothing
 
 
 
 adoCn.Close
 
 Set adoCn = Nothing
 
 End Sub
 | 
[예제 2]
다음 예제는 Recordset 개체를 통한 트랜잭션이 아니라 Connection 개체의 Execute 메서드를 사용한 트랜잭션을 Rollback 하는 예이다.
| Private Sub cmdRollbackTrans_Click()
 Dim adoCn As New ADODB.Connection
 
 Dim strConn As String
 
 
 
 strConn = "Provider=sqloledb;" & _
 
 "Data Source=(local);Initial Catalog=Pubs;User ID=sa;Password=; "
 
 
 
 adoCn.Open strConn
 
 
 
 adoCn.BeginTrans
 
 
 
 adoCn.Execute "Update Titles Set Type = 'self_help' Where Type = 'psychology'"
 
 
 
 ' 모든 변경 작업을 취소한다.
 
 adoCn.RollbackTrans
 
 
 
 adoCn.Close
 
 Set adoCn = Nothing
 
 End Sub
 | 
출처 : http://blog.naver.com/aram96/20010872730