Foxtable(狐表)用户栏目专家坐堂 → 关于try中嵌套try后,sql事务出错回滚的疑问?


  共有1781人关注过本帖树形打印复制链接

主题:关于try中嵌套try后,sql事务出错回滚的疑问?

帅哥哟,离线,有人找我吗?
luodang2050
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
关于try中嵌套try后,sql事务出错回滚的疑问?  发帖心情 Post By:2018/8/10 9:52:00 [只看该作者]

  • 如下代码:无法代码运行结果怎样,都会执行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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2018/8/10 10:29:00 [只看该作者]

收到,看来需要加标志进行处理,谢谢

 回到顶部