界面布局:
   DBGrid  button1
   数据库控件:adoconnection adoquery1 datasource
   button的click事件:   with adoquery1 do
     begin
       close;
       sql.text:='select * from menu';
       open;
     end;
   datasource.dataset:=adoquery1;
功能:点击button1  在DBGrid中显示数据库中表menu的信息。问题来了:  我点击一次button   在数据库中用sp_who查询进程信息时,进程数就+1,
           一直点击button就一直+1  导致进程数越来越多!!!
            这该怎么办??? 我要它进程数不增加,该怎么改写代码?!!!!

解决方案 »

  1.   


    datasource.dataset:=adoquery1;这句放到上面试试……
      

  2.   

    没有人知道吗?用delphi的人这么少?
      

  3.   

    adoconnection 才与数据库的在线用户数有关啊
    query的开关,应该不影响啊
      

  4.   

    那我点一次button  进程数就+1     而我始终是这个connection啊?  这怎么解释?
      

  5.   

    dataset用完之后,将connection销毁
      

  6.   

    connection销毁后,我程序的其他好多query都连接不到了呀! 
      

  7.   

    要先运行下面代码;
    adoquery1.Connection:=ADOConnection1;
    DataSource1.DataSet:=ADOQuery1;
    DBGrid1.DataSource:=DataSource1;然后在单击事件里写入
         with adoquery1 do
         begin
           close;
           sql.clear;
           sql.text:='select * from menu';
           open;
         end;
      

  8.   

    晕,销毁adoconnection后  adoquery1.Connection:=ADOConnection1  还有什么用。
      

  9.   

    可以把你connection和query的属性设置给我看看吗
      

  10.   


     with adoquery1 do
         begin
           close;
           sql.Clear; //每次执行要删除sql语句
           sql.text:='select * from menu';
           open;
         end;
       datasource.dataset:=adoquery1;
      

  11.   

    我晕,sql.clear这句完全是多余的难道不用这句,sql.text的值还保留原来的么
      

  12.   

    对。sql.clear这句完全是多余的,没错。
      

  13.   

    with adoquery1 do
      begin
      close;
      sql.clear;
      sql.text:='select * from menu';
      open;
      end;
    clear在一些时候是有用的
      

  14.   

    clear 只有和 sql.add连用吧
    用sql.text时候clear有神马用,还请赐教
      

  15.   

    你的Click事件就这么点代码吗?
    你的DBGrid事件中有没有什么处理过程?
    你多出来了线程,肯定是哪里创建了连接了。
    不然,不可能多出来的。
    ADOQUERY没这问题。
      

  16.   

    就那么多代码,这我骗你干嘛。DBgrid也没什么处理过程,回复的请正面回答我的问题。
      

  17.   

    按照LZ的方法写了个程序运行,没有多出来的链接。(D5+ SQL2000+ XP)1. 请LZ告知使用的Delphi版本,SQL Server版本以及OS的版本。2. 请LZ告知出问题的adoquery连接数据库的方式,是通过ADOConnection控件来连接的,还是通过ConnectionString来连接的。3. 请将运行前的sp_Who,运行1次以后的sp_Who,运行2次以后的sp_who的结果贴上来看看。4. LZ提供的代码片断本身是没有问题的,但是不能排除在其它地方对于Query,Connection有关联操作(这种关联操作往往隐藏得很深以至于难以发现),因此请LZ新建一个小工程,就放1个DBGrid,一个Datasource,一个ADOQuery,一个ADOConnection来进行测试,看看是不是仍然有这个问题。