我的一段程序:with AdoQuery1 do
begin
Close;
Sql.Clear;
Sql.Add('update table1 set field1=:p1 where field2=:p2');
Parameters.ParamByName('p1').value:=1;
Parameters.ParamByName('p2').value:=Edit1.text;
try
Execsql;
finally
Close;
end;
end;执行后从SQL Server监测端发现,Table1被加了锁,无法释放,造成另外一个事务使用Table1时失败。如果用事务,就没此问题,请问高手,在上面的程序中,Update执行完成后,已用try..finally将Adoquery1关闭了呀,为什么Table1还加了锁呢?难道这么简单的一句更新,还非得用事务不可吗?
begin
Close;
Sql.Clear;
Sql.Add('update table1 set field1=:p1 where field2=:p2');
Parameters.ParamByName('p1').value:=1;
Parameters.ParamByName('p2').value:=Edit1.text;
try
Execsql;
finally
Close;
end;
end;执行后从SQL Server监测端发现,Table1被加了锁,无法释放,造成另外一个事务使用Table1时失败。如果用事务,就没此问题,请问高手,在上面的程序中,Update执行完成后,已用try..finally将Adoquery1关闭了呀,为什么Table1还加了锁呢?难道这么简单的一句更新,还非得用事务不可吗?
http://expert.csdn.net/Expert/topic/1737/1737284.xml?temp=.1529657