本人利用delphi开发的asp组件封装了对数据库的连接,
有个全局的connection,在onstartpage方法中打开,
在onendpage方法中关闭.
但是在使用过程中过一段时间就会报错:
ora-00020 maximum number of processes(600)
为什么我使用connection.close方法关闭的连接
都没有真的被关闭,导致连接数超过设置的process
呢?
求助!非常着急

解决方案 »

  1.   

    unit Unit1;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
      ComObj, ActiveX, web_bas_jin_TLB, StdVcl,asptypelibrary_tlb,adodb,variant;type
      Tbas_jin = class(TAutoObject, Ibas_jin)
      protected
        con:olevariant;
        svr:Iscriptingcontext;
        function ReturnRecordset(sql:widestring): OleVariant; safecall;
        procedure Onstartpage(const unk: IUnknown); safecall;
        procedure OnEndpage();safecall;
        { Protected declarations }
      end;implementationuses ComServ ;procedure Tbas_jin.Onstartpage(const unk: IUnknown);
    begin
         svr:=unk as iscriptingcontext;
         con:=createoleobject("adodb.connection")
         con.connectionstring:=".......";
         con.connected:=true;
         
    end;
     
    function ReturnRecordset(sql:widestring): OleVariant; 
    var rs: variant;
    begin
       rs:=createoleobject("adodb.recordset")
       rs.connection:=con;
       rs.open(sql,con,1,1,1);
       result:=rs;
    end;procedure OnEndpage();
    begin
    svr:=nil;
    con.close;
    con.free;end;  initialization
      TAutoObjectFactory.Create(ComServer, Tbas_jin, Class_bas_jin,
        ciMultiInstance, tmBoth);
    end.
      

  2.   

    con.close;
    con.free;
    con:=nil;
    这样试试
      

  3.   

    try the operation again in a few minures. If thie message Occurs often, shut down Oracle,increase the PROCESSES parameter in the initialization patameter file,and restart oracle