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