我的代码有问题,我知道是在 FDQuery Select 上,因为如果我评论代码,错误就不会发生。由于某种原因,我不知道它会生成 2 个错误,然后应用程序崩溃:“访问冲突”和“列表索引越界”。
为了测试它,我留下了另一个程序垃圾邮件连接。
我在运行时为每个连接创建 FDQuery 并在使用后销毁:
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
什么可能导致此问题?
问题出在从池中获取连接上。 解决办法是:
Con.Que := TFDQuery.Create(nil);
Con.Que.Connection := TFDConnection.Create(nil);;
Con.Que.Connection.ConnectionDefName := 'MSCON';
Con.Que.Connection.Free;
Con.Que.Free;