GG,JJ,小弟今天碰到个奇怪的问题,现象如下描述:
   小弟用ADO开发个C/S,用一个ADO连接和多个存储过程完成功能,当程序频繁的读写数据库时,系统报“连接占线导致另一个命令”的错误提示,有时候很快可以看到错误提示,有时又运行比较久后才可看到,没有规律,跟踪调试也很麻烦,但是肯定是在执行一个存储过程(ADOStoredProc.Active:=true)时出错的。
   系统的流程大致描述一下,程序中有个存储过程调用很频繁,10--100次/秒不等,可以设置,主要是扫描功能,查询数据库中的某个表,还有一些存储过程是写数据库中的同一个表。
   小弟愚笨,请GG,JJ多多指教!

解决方案 »

  1.   

    这么没人啊,Self 顶!!
    气愤,就没人帮帮我!
      

  2.   

    To lgqTiger(我爱Delphi)
       这位大哥,能不能说详细些,什么叫“真正向数据库更新数据?”
       我的程序里有个Timer,不停的执行一个存储过程,该存储过程的作用是读出Table表中的记录数,而另外有个函数在时不时的调用另一个存储过程(向Table表中插入记录),请问我怎么“真正向数据库更新数据”
      

  3.   

    代码比较多,全贴出来不现实,我把大概的东东说一下
    procedure TimerTimer(Sender: TObject);
    var Count:integer
    begin                             
       Count:=Scan; //Scan是一个函数,主要是执行一个查询的存储过程,查询数据库中的Table表中的记录数并返回,比较频繁执行10--100次/秒 不等
    end;procedure InsertRecord(ID:integer;Content:string);
    begin                             
       SP_Insert; //插入记录到Table表的存储过程,8--10秒/次  (访问数据库不算过分吧)
    end;
    用的是同一个ADOConnection(程序启动后就连接到数据库了,直到程序结束才断开连接),错误提示就发生在Scan函数中ADOStoredProc.Active:=true这句话,但如果没有执行InsertRecord过程时,只执行OnTimer事件,系统不出错(在有限的时间中观察);如果停止OnTimer事件的执行,只执行InsertRecord过程,系统也不出错(在有限的时间中观察)。同时执行就报“连接占线导致另一个命令”的错误,是不是我要给这两个存储过程分别用一个连接??高手请指点!在线等待。