"Record already locked by this session"异常的复现,原因.求解决方案

子正 2008-06-28 10:54:11
描述一下软件的异常情况:
有两个Form,同时对一个数据库进行操作.使用过程中发现,在两个Form之间进行切换,并对数据表有修改和新增操作的时候,间或会出现一个异常.
这个异常,如果不在编译环境中,仅仅会弹出一个EAccessInValid异常.
平均每两三天出现一次.

今天第一次在编译环境中出现了这个异常.提示信息是 "Record already locked by this session"
网络上查了一下,了解了一些相关信息.下面先复现这个异常.

1.准备一个Form,两个DBGrid,两个TTable指向同一个数据表
2.在第一个DBGrid中对某一行的数据进行修改,然后对第二个DBGrid中的任一行数据进行修改.(注意第一个DBGrid修改后,不要在其他行上点击鼠标)
3.异常出现

原因:
当对第一个DBGrid修改后,因为没有在其他行上点击鼠标,此时,TTable处于更新未提交状态.TTable的内部逻辑部分有加锁的操作.
此时对第二个DBGrid进行修改,因为上一次的修改还未提交.所以,出现异常.

解决方案...............<无>
问题: 1.如何获取当前处于未提交状态.
...全文
462 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
我来看看CB 2008-06-28
  • 打赏
  • 举报
回复
如果数据库支持的话
jxw1987628 2008-06-28
  • 打赏
  • 举报
回复
如果是SQL服务器的类型的数据库应该不会出现你说的错误!(比如MSSQL,Oracle)

还是先检查下你的程序代码吧,
xiaoxiangqing 2008-06-28
  • 打赏
  • 举报
回复
你用的是什么数据库呀,我用的sql server2000,按照你所说的,我去测试了一下,没有你那个提法,只是提示:'ERRor:无法为更新定位行.一些值可能已在最后一次读取后已更改'

说明:
1.我用的是ADOConnection,ADOQuery的默认属性
2.你是不是改了ADOConnection,ADOQuery控件的LockType属性?

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧