请问下面的程序有什么错误? ( 积分: 100 )

  • 主题发起人 zhoen889
  • 开始时间
Z

zhoen889

Unregistered / Unconfirmed
GUEST, unregistred user!
if adoquery1.Active then

adoquery1.Active:=false;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select * from user');
adoquery1.SQL.Add('where username=:ID and password=:pASSWORD');
adoquery1.Parameters[0].Value:=edit1.Text;
adoquery1.Parameters[1].Value:=edit2.Text;
adoquery1.ExecSQL ;
adoquery1.Active:=true;
if adoquery1.RecordCount=0 then
begin
showmessage('帐号或者密码不正确!');
edit1.clear;
edit2.clear;
edit1.SetFocus;
end
else
begin
main.show;
login1.hide;
exit;
end;
end;
我在用这个程序登陆主界面的时候,会出现这样的问题:我用admin和admin这个正确帐户登陆的时候,可以进入主界面,如果帐户或密码错了,也能够提示,但是问题就在这时候出来了:当我再输入正确登陆信息的时候,系统就提示有错误了,请问是我的程序有错误吗?
刚学sql,期望得到您的帮忙!
多谢谢!!!
 
if adoquery1.Active then

adoquery1.Active:=false;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select * from user');
adoquery1.SQL.Add('where username=:ID and password=:pASSWORD');
adoquery1.Parameters[0].Value:=edit1.Text;
adoquery1.Parameters[1].Value:=edit2.Text;
adoquery1.ExecSQL ;
adoquery1.Active:=true;
if adoquery1.RecordCount=0 then
begin
showmessage('帐号或者密码不正确!');
edit1.clear;
edit2.clear;
edit1.SetFocus;
end
else
begin
main.show;
login1.hide;
exit;
end;
end;
我在用这个程序登陆主界面的时候,会出现这样的问题:我用admin和admin这个正确帐户登陆的时候,可以进入主界面,如果帐户或密码错了,也能够提示,但是问题就在这时候出来了:当我再输入正确登陆信息的时候,系统就提示有错误了,请问是我的程序有错误吗?
刚学sql,期望得到您的帮忙!
多谢谢!!!
 
你的程序有错误,Active的判断根本多此一举。clear之前一定要close。
select 用 query.open
delete,update,insert 等用query.execSQL.

adoquery1.close;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select * from user');
adoquery1.SQL.Add('where username=:ID and password=:pASSWORD');
adoquery1.Parameters[0].Value:=edit1.Text;
adoquery1.Parameters[1].Value:=edit2.Text;
adoquery1.open;
//adoquery1.Active:=true;
if adoquery1.RecordCount=0 then
begin
showmessage('帐号或者密码不正确!');
edit1.clear;
edit2.clear;
edit1.SetFocus;
end
else
begin
main.show;
login1.hide;
exit;
end;
 
还有,所有窗体用的时候再创建,不用就释放。别用hide
 
这种情况建议使用with语句:
with adoquery1do
begin
Close;

SQL.Clear ;
SQL.Add('select * from user');
SQL.Add('where username=:ID and password=:pASSWORD');
Parameters[0].Value:=edit1.Text;
Parameters[1].Value:=edit2.Text;
Open;
//这时不能用ExecSQL
if RecordCount=0 then
..............................
"所有窗体用的时候再创建,不用就释放。别用hide"----这很对.
 
应该用Open 不能用ExecSQL,
Open是返回结果,ExexSQL不返回结果~
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
933
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
817
import
I
顶部