以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于try中嵌套try后,sql事务出错回滚的疑问?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=123222)

--  作者:luodang2050
--  发布时间:2018/8/10 9:52:00
--  关于try中嵌套try后,sql事务出错回滚的疑问?
  • 如下代码:无法代码运行结果怎样,都会执行ole_conn.Close()关闭链接,且正常会提交事务或回滚事务。
  • 现嵌套try截获错误,直接return前跳到final关闭链接,事务并未回滚。
  • 请问:直接关闭链接,事务是否默认会自动回滚?如不会,应该要另外做下处理,比如建立事务是否结束的变量,以在final进行判断,未结束则回滚?
  • Try
  •     If IsolationLevel > 0 \'开启事务
  •         transaction = ole_conn.BeginTransaction(IsolationLevel)
  •         command.Transaction = transaction
  •     End If
  • try
  •     command.CommandText = "select * f rom test"
  •     command.ExecuteNonQuery()
  • Catch ex As Exception
  •     return "err"
  • End Try
  • If IsolationLevel > 0 Then transaction.Commit()
  •     msgbox("成功")
  • Catch ex As Exception
  •     If IsolationLevel > 0 Then transaction.Rollback() \'出错则回滚
  •     MessageBox.Show(ex.Message)
  • Finally
  •     ole_conn.Close() \'关闭链接
  • End Try

--  作者:有点甜
--  发布时间:2018/8/10 10:14:00
--  

参考代码

 

try
    Dim flag As Boolean = True
    try
        Dim i As Integer = "abc"
    catch exx As exception
        msgbox(3)
        flag = False
    End try
    If flag = False Then
        msgbox("中间有错")
    End If
catch ex As exception
    msgbox(2)
finally
    msgbox(1)
End try


--  作者:luodang2050
--  发布时间:2018/8/10 10:29:00
--  
收到,看来需要加标志进行处理,谢谢