这段访问代码有什么问题,为什么查询的执行时间这么长?
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能否用代码执行代码?
- 动态执行代码
- 自动执行代码




