首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于数据查询连接数有关问题

2012-02-16 
关于数据查询连接数问题我的查询代码如下,客户端安装了Oracle9客户端组件,并用netassist连通请问我的数据

关于数据查询连接数问题
我的查询代码如下,客户端安装了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;

[解决办法]
连接进程数控制

热点排行