读书人

Delphi与SQLServer连接后,验证数据库数

发布时间: 2012-03-01 10:25:46 作者: rapoo

Delphi与SQLServer连接后,验证数据库数据时候出问题,还是没有解决,为什么?
procedure TLoginfrm.bkOKClick(Sender: TObject);
begin
if not StudentDM.LoginADOQR.Active then //如果数据库没有打开,则打开数据库
StudentDM.LoginADOQR.Active:=true;
if (not StudentDM.LoginADOQR.Locate( 'UserID ',trim(UserIDEdt.Text),[]))
or (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) then
begin
Edit1.Text:=trim(StudentDM.LoginADOQRUserID.AsString);
Edit2.Text:=trim(StudentDm.LoginADOQRPassword.AsString);
Application.MessageBox( '账号或密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end
else
Application.Terminate();
end;


数据表UserID,Password,里面有个用户名和密码都是admin
我做好了一个登陆界面,连接好了数据库,写好了SQL语句,但是不管了账户和密码是否正确总是进入MessageBox模块........Edit1和Edit2是我为了跟踪数据表指针建立的...里面都能读出数据表中的admin
我把这段
or (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text))
去掉后,在UserIDEdt中输入admin,能正确登陆...经过测试好像就是这句的问题了...但是我觉得这里毫无问题啊?这个是为什么啊?


这个是刚才问的时候的帖子
http://community.csdn.net/Expert/topic/5498/5498219.xml?temp=.212826
本以为解决了...可是改了一下试了各种方法,包括顺序查找法都用上了,就是验证了账户以后密码始终得不到验证...借了好多书...都没有看到相关的问题......我郁闷了.....

[解决办法]
你的代码这样写有些不是很清楚,看看下面的能否行得通
procedure TLoginfrm.bkOKClick(Sender: TObject);
begin
if not StudentDM.LoginADOQR.Active then //如果数据库没有打开,则打开数据库
StudentDM.LoginADOQR.Active:=true;
if (not StudentDM.LoginADOQR.Locate( 'UserID ',trim(UserIDEdt.Text),[])) then
begin
MessageBox( '帐户不存在! ');
UserIDEdit.SetFocus;
exit;
end;
if (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) then
begin
Application.MessageBox( '密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end
{进入主程序}
end;
这个问题不应该这么复杂,如果还是不行你可以不用Locate方法用参数查询来实现,
设计期设置LoginADOQR的Sql属性为select UserID,passwod From admin where UserID=:userID

procedure TLoginfrm.bkOKClick(Sender: TObject);
begin
if StudentDM.LoginADOQR.Active then
StudentDM.LoginADOQR.Active:=false;
StudentDM.LoginADOQR.Parameters.ParamByName[ 'UserID '].value:=Trim(UserIDEdit.Text);
StudentDM.LoginADOQR.Open;
if (StudentDM.LoginADOQR.RecordCount=0) then
begin
MessageBox( '帐户不存在! ');
UserIDEdit.SetFocus;
exit;
end;
if (StudentDM.LoginADOQR.FieldByName( 'Password ').AsString <> Trim(PasswordEdt.Text)) then
begin
Application.MessageBox( '密码错误 ', '提示信息 ',MB_ICONWarning);
UserIDEdt.SetFocus();
exit;
end
{进入主程序}
end;

读书人网 >.NET

热点推荐