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;
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;
何故? 解答为盼!
在delphi里也是这种情况应该加一个COMMIT;来提交一整次的数据库操作事务
什么意思?
是提交事务吗
如果ADOConnection没有显式启动事务,有必要用提交吗?
我在程序中更新部分的前和后都加入了if ADOConnection.IsTransaction then showMessage。。
并且没有事务活动。