我的代码中有问题,我知道它出现在
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
什么可能导致此问题?
问题出在从池中获取连接上。 解决办法是:
Con.Que := TFDQuery.Create(nil);
Con.Que.Connection := TFDConnection.Create(nil);;
Con.Que.Connection.ConnectionDefName := 'MSCON';
Con.Que.Connection.Free;
Con.Que.Free;