关于密码判断的简单问题(50分)

  • 主题发起人 主题发起人 xyt3dnow
  • 开始时间 开始时间
X

xyt3dnow

Unregistered / Unconfirmed
GUEST, unregistred user!
本人编写了一段密码判断程,在paradox表,table控件的情况下运行良好。
而在sql数据库中,adotable下却总是说密码错误(即使是输入正确的权限)
请各位大侠指出原因或给出更好的密码判断程序。不胜感激。
其中count是全局变量。
var
results:variant;
begin
count:=count+1;
results:=table1.Lookup('name',edit1.text,'password');‘此处换为adotable1’
if results=edit2.text then
form2.showmodal
else
begin
showmessage('错误的用户名或密码');
if count=3 then
close;
end;
end;
 
procedure TPasswordDlg.OKBtnClick(Sender: TObject);
var
RecordSet: OleVariant;
begin
adoconnection1.Open;
RecordSet:=adoconnection1.Execute('select user_id from users where user_name='''+user.Text+''' and user_pwd='''+pwd.Text+'''');
//messagedlg('select user_id from users where user_name='''+user.Text+''' and user_pwd='''+pwd.Text+'''',mtInformation,[mbOk], 0);
if not (RecordSet.bof and RecordSet.eof) then
begin
//MessageDlg('Login ok.', mtInformation,[mbOk], 0);
adoconnection1.Connected:=false;
passworddlg.hide;
form1.show;
end
else
begin
MessageDlg('登录失败!请检查用户名/密码!', mtInformation,[mbOk], 0);
user.SelStart;
end;
end;
 
写一个简单的加密/解密程序存取一下看看吧,我以前在sql7中用过没事的。
 
数据库是本地还是远程,如果是远程可能同语言设置有关系
我以前用SYBASE数据库时曾经出现过另外机器录入的数据显示乱码的问题
 
如果你的密码是用char()的形式存放在sql server中,用ado控件取出来时它
要自动补空格的,所以最好把返回结果用trim()处理一下再比较。
 
tornado_cs
可否写出程序看看?
 
var
password:string;
begin
count:=count+1;
password:=table1.Lookup('name',trim(edit1.text),'password');‘此处换为adotable1’
password:=trim(password);
if password=trim(edit2.text) then
{如果不区分大小写用if lowercase(password)=lowercase((trim(edit2.text)) then}
form2.showmodal
else begin
showmessage('错误的用户名或密码');
if count=3 then close;
end;
end;
 
多人接受答案了。
 
后退
顶部