TFDQuery SELECT 查询上的列表索引越界和访问冲突

问题描述 投票:0回答:1

我的代码中有问题,我知道它出现在

TFDQuery
SELECT
查询中,因为如果我评论该代码,错误就不会发生。

由于某种我不知道的原因,一段时间后它会生成 2 个错误,然后应用程序崩溃:

访问违规

列表索引越界

为了进行测试,我留下了另一个程序垃圾邮件连接。

我在运行时为每个连接创建

TFDQuery
并在使用后销毁它:

Con.Que                 := TFDQuery.Create(nil);
Con.Que.ConnectionName  := 'MSCON';
Con.Que.Name            := Format('FD%d', [GetTickCount64]);

with Con.Que do
begin
  try
    SQL.Text := 'SELECT name FROM EXCEPT WHERE info = :info ';
    Params.ParamByName('info').Value := 'Some Info';
    Open;
    
    if not IsEmpty then Variable := FieldByName('name').AsString;
  finally
    SQL.Clear;
    Close;
  end;
end;

Con.Que.Free

什么可能导致此问题?

delphi firedac
1个回答
0
投票

问题出在从池中获取连接上。 解决办法是:

Con.Que                               := TFDQuery.Create(nil);
      Con.Que.Connection                    := TFDConnection.Create(nil);;
      Con.Que.Connection.ConnectionDefName  := 'MSCON';
      
      Con.Que.Connection.Free;
        Con.Que.Free;
© www.soinside.com 2019 - 2024. All rights reserved.