首页 新闻 会员 周边 捐助

ibatisnet 创建事务 执行代码完成,但会锁定数据库(很慢)?什么原因?

0
悬赏园豆:30 [已关闭问题] 关闭于 2012-02-08 08:48

在后台代码,创建了ibatisnet的事务执行数据删除和插入,代码执行正确,且完了。但是锁定了数据库,导致使用sql server management打不开数据表?过一段时间就好了。但执行结果却没成功(没删除和插入成功)。,去掉事务后,代码正常,且数据删除和插入成功

Try
            sundao.BeginTransaction()
            returnValue = ExcuteEvent(hasParam)
            sundao.Commit()
        Catch ex As Exception
            If logger.IsErrorEnabled Then
                logger.Error("Database error occurred")
            End If
            sundao.RollBack()
  End Try

zxwdlive的主页 zxwdlive | 初学一级 | 园豆:7
提问于:2012-01-31 17:50
< >
分享
所有回答(1)
0

看表现,应该是事务执行之后没有commit也没有rollback,跟一下代码

一种可能是触发了catch里的代码,然后在记logger的时候又异常了

另外,你这个是VB吧?感觉最后那个sundao.RollBack()在这个位置怪怪的

丁学 | 园豆:18730 (专家六级) | 2012-01-31 18:38

你好

    调试过代码,正常commit的,没有异常,只是commit后,数据库那边会很慢(估计是在执行commit),同时数据库表被锁定了,不能在其他地方检索和修改。

RollBack在catch里,有问题?

谢谢

支持(0) 反对(0) zxwdlive | 园豆:7 (初学一级) | 2012-02-01 09:34

@zxwdlive: 

这样的话,应该是事务太大了,要提交的数据太多,所以提交时间比较长,在提交期间表被锁是正常的,看下过程中的各个SQL,是不是有特别费时间的

支持(0) 反对(0) 丁学 | 园豆:18730 (专家六级) | 2012-02-01 11:23

@丁学:    开始我也这样认为的,不过我后来看了下,数据只有4条,先删除表中对应的数据,在插入4条数据,sql就是那种很简单的根据主键删除和插入。我想应该和ibatis的事务配置可能有关系,但是我不知道在ibatis中是否需要为事务处理特别配置。或者说需要手动close?

支持(0) 反对(0) zxwdlive | 园豆:7 (初学一级) | 2012-02-01 12:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册