CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

这段访问代码有什么问题,为什么查询的执行时间这么长?

楼主王岳(王岳)2003-09-03 21:46:52 在 Delphi / 数据库相关 提问

procedure   TValidThread.Execute;  
  var  
  UserName:string;  
  UserPass:string;  
  ConnThread:Pointer;  
  BuffSendData:Array[1..16]   of   char;  
  i,j:integer;  
  AdoConn:TAdoConnection;  
  AdoQry:TAdoQuery;  
  UserValid:Boolean;  
  begin  
    CoInitialize(NIL);  
    AdoConn:=TAdoConnection.Create(NIL);  
    AdoQry:=TAdoQuery.Create(NIL);  
    AdoConn.ConnectionString:=frmvaliduser.StrConnect;  
    AdoConn.LoginPrompt:=False;  
    AdoConn.Connected:=True;  
    AdoQry.Connection:=AdoConn;  
    While   frmvalidUser.idIsUserValid.Active   do  
      begin  
        if   DeQueue(MyQueue,UserName,Userpass,ConnThread)   then  
          begin  
            j:=GetTickCount();  
            try  
              UserValid:=False;  
              ZeroMemory(@BuffSendData,16);  
              try  
                AdoQry.Active:=False;  
                AdoQry.SQL.Clear;  
                AdoQry.SQL.Add('Select   *   from   userdata   where   用户姓名='''+UserName+''''+'   AND   用户密码='''+UserPass+'''');  
                AdoQry.Active:=True;  
                if   AdoQry.isempty=False   then  
                  begin  
                    UserValid:=True;  
                  end  
                else  
                  begin  
                    UserValid:=False;  
                  end;  
              except  
              end;  
              j:=GetTickCount()-j;  
              frmvaliduser.Label9.Caption:=inttostr(j);  
              if   UserValid   then  
                begin  
                  try  
                    BuffSendData[1]:='S';  
                    TIdPeerThread(ConnThread).Connection.WriteBuffer(BuffSendData,16,True);  
                  except  
                  end;  
                end  
              else  
                begin  
                  try  
                    BuffSendData[1]:='F';  
                    TIdPeerThread(ConnThread).Connection.WriteBuffer(BuffSendData,16,True);  
                  except  
                  end;  
                end;  
            finally  
              try  
                  TIdPeerThread(ConnThread).Connection.Disconnect;  
              except  
              end;  
            end;  
            sleep(5);  
          end  
        else  
          sleep(10);  
      end;  
    AdoQry.Close;  
    AdoQry.Destroy;  
    AdoConn.Close;  
    AdoConn.Destroy;  
    CoInitialize(NIL);  
  end;  
  这个线程里的数据库查询代码的执行过程明显比正常的查询过程慢,不明白为什么  
  问题点数:100、回复次数:7Top

1 楼huojiehai(海天子)回复于 2003-09-03 21:57:17 得分 0

会不会是  
   
      While   frmvalidUser.idIsUserValid.Active   do   一直在循环Top

2 楼tanqth(青蛙)回复于 2003-09-03 22:01:35 得分 0

upTop

3 楼qxj(己所不欲,勿施于人;送人玫瑰,手有余香!)回复于 2003-09-03 22:10:23 得分 0

又一个中文IDTop

4 楼王岳(王岳)回复于 2003-09-03 22:17:46 得分 0

to   huojiehai(海天子)  
  确实一直在循环  
  但应该不会影响数据库查询部分啊  
    j:=GetTickCount();  
    .  
    .  
    .  
    .  
    j:=GetTickCount()-j;  
  记录了查询时间  
  大概要180-300ms  
  我在主进程里查询只要20ms左右Top

5 楼yangmanyuan(蓝天白云)回复于 2003-09-03 23:20:53 得分 0

upTop

6 楼王岳(王岳)回复于 2003-09-04 11:25:29 得分 0

UPTop

7 楼ytnb(牛牛)回复于 2003-09-04 20:57:38 得分 100

upTop

相关问题

  • 查询分析器中能执行,在ado中如何写代码?
  • 怎样才能使一段代码在执行时互斥,还有怎样锁定一个变量的访问?
  • 小妹求一简单问题,烦劳各位回答详细点:用Applet访问Sql server2000并执行查询。
  • 在查询分析器立刻执行的代码,如何用在VB里,那位兄弟可以把代码示例贴出来;
  • ADOQuery的查询访问
  • 下面代码实现查询并读出id.如果我还想执行str1并读出查询所得的id1。请问如何同时两条语句?
  • VB代码执行一个*.sql脚本 不用循环去执行,而是我给这个.sql脚本存放的路径,代码调用SQL SERVER2000的查询分析器去执行这个脚本,怎么解
  • VB.NET能否用代码执行代码?
  • 动态执行代码
  • 自动执行代码

关键词

  • active
  • adoqry
  • buffsenddata
  • adoconn
  • connthread
  • frmvaliduser
  • uservalid
  • tidpeerthread
  • userpass
  • nil

得分解答快速导航

  • 帖主:王岳
  • ytnb

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo