我的查询代码如下,客户端安装了Oracle 9客户端组件,并用netassist连通
请问我的数据连接都是及时关闭,为什么连接数还会超过现在设置的200呢?//生成B类报文:返回查询结果
function TFormMain.doQryDataFromDB(sQry:string):string;
var
    sReturn,sConnInfo:string;
    i,j:integer;
    curDataBase: TDataBase;
    curQuery: TQuery;
    AList:TStringList;
begin
    if sQry='' then
        sReturn :=oCommPacket_Head+ErrPacket_Head+'0'+
            oCommPacket_DataBEG+'输入条件不正确,请重新输入!'+
            oCommPacket_DataEnd+oCommPacket_Foot
    else
    begin
        try
            CoInitialize(nil);
            //动态创建数据库连接及查询对象
            AList:=TStringList.Create;
            AList.LoadFromFile('DBConn.txt');                       curDataBase :=TDataBase.Create(Nil);
            curDataBase.DriverName :=copy(AList.Strings[0],pos('=',AList.Strings[0])+1,length(AList.Strings[0]));
            curDataBase.DataBaseName :=copy(AList.Strings[1],pos('=',AList.Strings[1])+1,length(AList.Strings[1]));
            curDataBase.LoginPrompt :=False;
            i :=0;
            while i<AList.Count-2 do
            begin
                curDataBase.Params.Add(AList.Strings[i+2]);
                i :=i+1;
            end;            curQuery :=TQuery.Create(Nil);
            curQuery.DatabaseName :=copy(AList.Strings[1],pos('=',AList.Strings[1])+1,length(AList.Strings[1]));            curDataBase.Open;
            if (curDataBase.Connected)then
            begin
                with curQuery do
                begin
                    try
                      Active :=false;
                      SQL.Clear;
                      SQL.Add(sQry);
                      Active :=true;
//                      ExecSQL;
                      oCommPacket_Type :='BTYP';
                      sReturn :=oCommPacket_Head+oCommPacket_Type+inttostr(RecordCount);
                      if RecordCount >0 then
                      begin
                        First;
                        i :=0;
                        while i<=RecordCount-1 do
                        begin
                            sReturn :=sReturn +oCommPacket_DataBEG;
                            j :=0;
                            while j<=FieldCount-1 do
                            begin
                                sReturn :=sReturn+trim(Fields[j].AsString)+'|';
                                j :=j+1;
                            end;
                            sReturn :=sReturn+oCommPacket_DataEnd;
                            i :=i+1;
                            Next;
                        end;
                      end
                      else
                          sReturn :=sReturn+oCommPacket_DataBEG+'没有符合条件的记录!'+oCommPacket_DataEnd;
                    finally
                      sReturn :=sReturn+oCommPacket_Foot;                    
                      Close;
                    end;
                end;
            end;
        finally
            curDataBase.Close;
            FreeAndNil(curDataBase);
            FreeAndNil(curQuery);
            FreeAndNil(AList);
            CoUninitialize;
        end;
    end;
    Result :=sReturn;
end;