在后台代码,创建了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
看表现,应该是事务执行之后没有commit也没有rollback,跟一下代码
一种可能是触发了catch里的代码,然后在记logger的时候又异常了
另外,你这个是VB吧?感觉最后那个sundao.RollBack()在这个位置怪怪的
你好
调试过代码,正常commit的,没有异常,只是commit后,数据库那边会很慢(估计是在执行commit),同时数据库表被锁定了,不能在其他地方检索和修改。
RollBack在catch里,有问题?
谢谢
@zxwdlive:
这样的话,应该是事务太大了,要提交的数据太多,所以提交时间比较长,在提交期间表被锁是正常的,看下过程中的各个SQL,是不是有特别费时间的
@丁学: 开始我也这样认为的,不过我后来看了下,数据只有4条,先删除表中对应的数据,在插入4条数据,sql就是那种很简单的根据主键删除和插入。我想应该和ibatis的事务配置可能有关系,但是我不知道在ibatis中是否需要为事务处理特别配置。或者说需要手动close?