TADOQuery连接数据库更新表A后,A被锁住,在企业管理器中查询超时。

MyCrooner 2003-09-14 01:22:26
TADOQuery连接数据库更新表A后,A被锁住,在企业管理器中查询超时, 只有关闭应用程序企业管理器才能查询A表。而所作的更新在应用程序关闭后没有生效,而我并没有启动Adoconnection的事务。 何故? 请那位兄弟分析一下. 下面是更新代码.
function TFormFenLeiNumSetting.Save(iWeiZhi : integer; sID , sID_Desc : string) : boolean;
var
AQuery : TADOQuery;
begin
Result := false;
AQuery := TADOQuery.Create(nil);
AQuery.Connection := FormDMEquip.ADOConnequip; //连接控件
AQuery.Close;
AQuery.SQL.Clear;
AQuery.Sql.Text := 'Update A Set ID_DESC = ''' + sID_Desc + ''' Where WeiZhi = '
+ intToStr(iWeiZhi) + ' and ID = ''' + sID + '''';

try
AQuery.ExecSQL;
Result := true;
except
On E : Exception do
MyShowErrMessage('错误原因:' + #13#10 + E.Message);
end;
AQuery.Close;
AQuery.Free;
//此处重新读取表A显示在界面,显示更新成功。
end;
...全文
82 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
MyCrooner 2003-09-15
  • 打赏
  • 举报
回复
up
leapmars 2003-09-15
  • 打赏
  • 举报
回复
在 TCustomADODataSet 中有可能会隐含的启动事务。

你可以试着在 AQuery.ExecSQL 之前,打开 ADOConnection,然后执行上述语句。

SQL Server 在启动事务的时候,会进行表级锁定。 而执行上述语句,会降低事务的隔离级别。不过,这种方法有可能导致数据完整性的破坏。
MyCrooner 2003-09-15
  • 打赏
  • 举报
回复
ADOConnection.Execute('SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED');
什么意思?
是提交事务吗
如果ADOConnection没有显式启动事务,有必要用提交吗?
我在程序中更新部分的前和后都加入了if ADOConnection.IsTransaction then showMessage。。
并且没有事务活动。
leapmars 2003-09-15
  • 打赏
  • 举报
回复
ADOConnection.Execute('SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED');
S海鸥 2003-09-15
  • 打赏
  • 举报
回复

在delphi里也是这种情况应该加一个COMMIT;来提交一整次的数据库操作事务
hongqi162 2003-09-15
  • 打赏
  • 举报
回复
up
w1w2w3w4 2003-09-15
  • 打赏
  • 举报
回复
不清楚。但好像在PB里这种情况应该加一个COMMIT;来提交一整次的数据库操作事务。
MyCrooner 2003-09-14
  • 打赏
  • 举报
回复
up÷
MyCrooner 2003-09-14
  • 打赏
  • 举报
回复
这张表就三个字段,每个字段几个字母,更新的数据一共才3个字母。设置了一个双字段的主键。对SQL 2000不是太清楚,程序运行更新直到退出前表都被锁住, 在企业管理器的‘锁/对象’中可以看到三个项目,都是对这个表的锁定,就一个进程,锁类型分别是Pag/Tab/Key, 模式分别为IX/IX/X, 状态Grant,所有者Xact。
何故? 解答为盼!
kingecg 2003-09-14
  • 打赏
  • 举报
回复
DBMS会自动把一条SQL当成一个事务处理
kingecg 2003-09-14
  • 打赏
  • 举报
回复
可能是你数据太多,后台事务没有完成

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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