为什么不产生异常?(20分)

  • 主题发起人 主题发起人 hongsen
  • 开始时间 开始时间
H

hongsen

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了如下的代码,在两个DELPHI集成开发环境下同时调试。我将SELECT语句加锁选项设为TABLOCKX(排它表锁)
此选项被选中时,SQL Server 将在整个表上置排它锁直至该命令或事务结束。这将防止其他进程读取或修改表中的数据。


当我单步执行到ADOQuery1.open时,应该后一个执行的程序被阻塞,从而产生Timeout expired异常。为什么我没有产生
这样的异常?

ADOConnection1.BeginTrans;
try
ADOQuery1.Close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select * from orders TABLOCKX');
ADOQuery1.open;
ADOConnection1.CommitTrans;
except
on e:exception do
showmessage(e.Message);
end;
 
on e:exception do 把这行去掉吧。
 
命令执行很快,怎么会异常。
在ADOQuery1.open;后加上
sleep(100000)试试呢。
 
后退
顶部