在COM+里使用了事务处理,但发现根本没用。各位帮忙看看是怎么回事?
Implements ObjectControl
Private marConnectIsOpen As Integer '0-¹Ø±Õ£¬1-´ò¿ª
Private conn As ADODB.Connection
Private strNoUse As StringPublic Function OpenConnection() As Boolean
On Error GoTo Err
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=MSDASQL.1;Password=explanner;Persist Security Info=True;User ID=explanner;Data Source=explanner"
conn.Open
OpenConnection = True
marConnectIsOpen = 1
Exit Function
Err:
OpenConnection = False
'MsgBox Err.Description
marConnectIsOpen = 0
End FunctionPublic Property Get ConnectIsOpen() As Integer
ConnectIsOpen = marConnectIsOpen
End PropertyPublic Function InsertTable() As String
Dim rs As ADODB.Recordset
Dim objText As ObjectContext
Dim str As StringOn Error GoTo ErrSet objText = GetObjectContext'conn.BeginTrans
InsertTable = ""
Set rs = New ADODB.Recordset
'rs.CursorLocation = adUseClientrs.Open "insert into item values('de','ÍйÊ','444','sdfdf')", conn, adOpenForwardOnly, adLockPessimistic
'rs.Close
rs.Open "insert into vender values('aa','sfds','34')", conn, adOpenForwardOnly, adLockPessimistic
'rs.Close
InsertTable = "success"
If Not rs Is Nothing Then
Set rs = Nothing
End If
objText.SetComplete
'conn.CommitTransExit FunctionErr:
objText.SetAbort
'conn.RollbackTrans
If Not rs Is Nothing Then
Set rs = Nothing
End If
'InsertTable = False
InsertTable = Err.Description
marConnectIsOpen = 0
End Function
Private Sub ObjectControl_Activate()
strNoUse = ""
End SubPrivate Function ObjectControl_CanBePooled() As Boolean
ObjectControl_CanBePooled = False
End FunctionPrivate Sub ObjectControl_Deactivate()
strNoUse = ""
End Sub在InsertTable函数里使用了事务处理,但是如果当第一条语句可以插入,而第二条语句不能插入后,应该要回滚,结果却发现没有回滚,第一条语句已经正确插入。请问怎么回事??
Implements ObjectControl
Private marConnectIsOpen As Integer '0-¹Ø±Õ£¬1-´ò¿ª
Private conn As ADODB.Connection
Private strNoUse As StringPublic Function OpenConnection() As Boolean
On Error GoTo Err
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=MSDASQL.1;Password=explanner;Persist Security Info=True;User ID=explanner;Data Source=explanner"
conn.Open
OpenConnection = True
marConnectIsOpen = 1
Exit Function
Err:
OpenConnection = False
'MsgBox Err.Description
marConnectIsOpen = 0
End FunctionPublic Property Get ConnectIsOpen() As Integer
ConnectIsOpen = marConnectIsOpen
End PropertyPublic Function InsertTable() As String
Dim rs As ADODB.Recordset
Dim objText As ObjectContext
Dim str As StringOn Error GoTo ErrSet objText = GetObjectContext'conn.BeginTrans
InsertTable = ""
Set rs = New ADODB.Recordset
'rs.CursorLocation = adUseClientrs.Open "insert into item values('de','ÍйÊ','444','sdfdf')", conn, adOpenForwardOnly, adLockPessimistic
'rs.Close
rs.Open "insert into vender values('aa','sfds','34')", conn, adOpenForwardOnly, adLockPessimistic
'rs.Close
InsertTable = "success"
If Not rs Is Nothing Then
Set rs = Nothing
End If
objText.SetComplete
'conn.CommitTransExit FunctionErr:
objText.SetAbort
'conn.RollbackTrans
If Not rs Is Nothing Then
Set rs = Nothing
End If
'InsertTable = False
InsertTable = Err.Description
marConnectIsOpen = 0
End Function
Private Sub ObjectControl_Activate()
strNoUse = ""
End SubPrivate Function ObjectControl_CanBePooled() As Boolean
ObjectControl_CanBePooled = False
End FunctionPrivate Sub ObjectControl_Deactivate()
strNoUse = ""
End Sub在InsertTable函数里使用了事务处理,但是如果当第一条语句可以插入,而第二条语句不能插入后,应该要回滚,结果却发现没有回滚,第一条语句已经正确插入。请问怎么回事??
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货