性能和资源占用上是一样的,第二种方式,是adoquery内部调用了close,如下:constructor TADOQuery.Create(AOwner: TComponent);begin inherited Create(AOwner); FSQL := TStringList.Create; TStringList(FSQL).OnChange := QueryChanged; 设置SQL属性的OnChange事件。 Command.CommandTextAlias := 'SQL'; { Do not localize }end;procedure TADOQuery.QueryChanged(Sender: TObject);begin if not (csLoading in ComponentState) then Close; CommandText := FSQL.Text;end;--------------------------------------------但第二种在多次调用的时候,有时会发生一些莫名其妙的异常,这里的多次指的是通过循环执行几千次或者几万次以上。