高手们求教呀!!!
我用delphi7做了一个登入界面,基本逻辑是,将输入的ID与密码跟SQL数据表中的ID和密码比对,若与SQL中的相等即可登入,否则不能登入。大妈如下,运行结果直接跳过了if,执行else ,代码是没有问题的。请高手们指点一下。感谢!!procedure TForm1.Button1Click(Sender: TObject);
var
i:String;beginadoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select password from user_table');
adoquery1.SQL.Add('where ID='''+edit1.text+'''');
adoquery1.Open;
Showmessage(adoQuery1.FieldByName('password').AsString);i:=adoQuery1.FieldByName('password').AsString;showmessage(i);
if(edit2.Text = i) then
form2.showelse showmessage('你的密码有误!');
end;
我用delphi7做了一个登入界面,基本逻辑是,将输入的ID与密码跟SQL数据表中的ID和密码比对,若与SQL中的相等即可登入,否则不能登入。大妈如下,运行结果直接跳过了if,执行else ,代码是没有问题的。请高手们指点一下。感谢!!procedure TForm1.Button1Click(Sender: TObject);
var
i:String;beginadoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select password from user_table');
adoquery1.SQL.Add('where ID='''+edit1.text+'''');
adoquery1.Open;
Showmessage(adoQuery1.FieldByName('password').AsString);i:=adoQuery1.FieldByName('password').AsString;showmessage(i);
if(edit2.Text = i) then
form2.showelse showmessage('你的密码有误!');
end;
你弄的这个登录代码很乱,一般书上不是这样弄的。
应该是这样:
select * from user_table
where (id=:id) and (mm=:mm)
参数id:=edit1.text;
参数mm:=edit2.text;
open;
if adoquery1的总记录数=1 then
form2.show
else
密码有误码;
(因没打开delphi,所以有些东西不会写。另外还应该判断edit1是否为空等情况。)
showmessage(edit2.Text);仔細對比看,肯定與i不同
正确。你可两个都加上trim().
多谢多谢!!都加上Trim()后。问题解决了!!!再请教一下,Trim()是起什么作用的??
if(edit2.Text = i)
修改成如下试试
if(trim(edit2.Text) = trim(i))
比如:
s := ' abc ' //注意前面有空格,后面没有
用trim(s)后s的值等于'abc'