Delphi中如何利用ADOquery实现登录时的用户名密码验证?
数据库是SQLServer2000,建一张表里面存储授权的用户名和密码,然后编写登陆界面,就是Edit1、Edit2分别输入用户名和密码,点确认后如果用户名和密码是表里有...
数据库是SQL Server 2000,建一张表里面存储授权的用户名和密码,然后编写登陆界面,就是Edit1、Edit2分别输入用户名和密码,点确认后如果用户名和密码是表里有的就登录成功,否则就提示错误,请问如何实现呢?试了一天了也没弄好~ 谢谢大家了!
展开
4个回答
展开全部
给你一段代码作为参考吧。代码中有详细解释
函数传入用户名和密码参数,第三个参数isClearText指明传入的密码是明文还是加密过的。
数据库中存储的是MD5加密过的密码。
函数返回值就是登录是否成功。
function TdlgLogin.CheckPass(username, password: string;
IsClearText: Boolean): Boolean;
const
SQLFmt = 'SELECT * FROM 用户名密码表 WHERE username=''%s'' and password=''%s'' ';
var
qryUser: TADOQuery;
begin
//如果传入的是明文,则对密码进行MD5加密,
//如果你不使用加密,可以去掉这一句。
if IsClearText then
password := MD5ToStr(MD5String(AnsiString(password)));
//建立ADOQuery并连接数据库
qryUser := TADOQuery.Create(Self);
try
qryUser.Connection := MData.ADOConn;
//设置SQL语句,参看上面的const部分。
qryUser.SQL.Text := Format(SQLFmt, [username, password]);
qryUser.Open; //打开查询
Result := qryUser.RecordCount > 0; //判断是否有满足条件的记录
//登录成功的,记录登陆者的用户ID
if Result then
MData.LoginUserID := qryUser.FieldByName('UID').AsInteger;
finally
qryUser.Free; //释放资源
end;
end;
函数传入用户名和密码参数,第三个参数isClearText指明传入的密码是明文还是加密过的。
数据库中存储的是MD5加密过的密码。
函数返回值就是登录是否成功。
function TdlgLogin.CheckPass(username, password: string;
IsClearText: Boolean): Boolean;
const
SQLFmt = 'SELECT * FROM 用户名密码表 WHERE username=''%s'' and password=''%s'' ';
var
qryUser: TADOQuery;
begin
//如果传入的是明文,则对密码进行MD5加密,
//如果你不使用加密,可以去掉这一句。
if IsClearText then
password := MD5ToStr(MD5String(AnsiString(password)));
//建立ADOQuery并连接数据库
qryUser := TADOQuery.Create(Self);
try
qryUser.Connection := MData.ADOConn;
//设置SQL语句,参看上面的const部分。
qryUser.SQL.Text := Format(SQLFmt, [username, password]);
qryUser.Open; //打开查询
Result := qryUser.RecordCount > 0; //判断是否有满足条件的记录
//登录成功的,记录登陆者的用户ID
if Result then
MData.LoginUserID := qryUser.FieldByName('UID').AsInteger;
finally
qryUser.Free; //释放资源
end;
end;
金山毒霸
2024-10-31 广告
2024-10-31 广告
大部分系统错误,是因为某些DLL文件丢失造成的,比如未安装DirectX9或DirectX 9.0组件已损坏、缺少Visual C ++库、未安装.net库。解决方法如下:一、 手动解决方法1、先确定电脑操作系统是多少位的,现在的电脑一般都...
点击进入详情页
本回答由金山毒霸提供
展开全部
难道你自己建立了一个用户名和密码的表,然后用这个表的用户名\密码登陆?
首先 连接sql server 需要的用户名和密码是你在sql server里创建的用户(像sa)。
这个写到ADOquery控件的属性里(服务器地址,数据库名称,username passwordd...)
你的edit1 edit2 只是作为参数搜索下:
"select count(*) from table where name=:name and password=:password“
传入这两个参数,执行这个语句 根据结果判断
首先 连接sql server 需要的用户名和密码是你在sql server里创建的用户(像sa)。
这个写到ADOquery控件的属性里(服务器地址,数据库名称,username passwordd...)
你的edit1 edit2 只是作为参数搜索下:
"select count(*) from table where name=:name and password=:password“
传入这两个参数,执行这个语句 根据结果判断
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实现的前提是ADOQuery连接上了相应数据库
假设操作员表名为:czyb,用户名为:operator,密码为:password
根据输入的用户名和密码到表中查询相关记录,有记录则通过,无记录则提示
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from cyzb where operator = :param1 and password = :param2');
Parameters.ParamByName(param1 ').value:=edit1.text;
Parameters.ParamByName(param2 ').value:=edit2.text;
open;
end;
if adoquery1.recordcount = 0 then
begin
showmessage('请输入正确的用户名或密码!');
edit1.text = '';
edit2.text='';
edit1.setfocus;
end;
假设操作员表名为:czyb,用户名为:operator,密码为:password
根据输入的用户名和密码到表中查询相关记录,有记录则通过,无记录则提示
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from cyzb where operator = :param1 and password = :param2');
Parameters.ParamByName(param1 ').value:=edit1.text;
Parameters.ParamByName(param2 ').value:=edit2.text;
open;
end;
if adoquery1.recordcount = 0 then
begin
showmessage('请输入正确的用户名或密码!');
edit1.text = '';
edit2.text='';
edit1.setfocus;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把你做好的代码传上来看看噻,刚好我也遇到这个问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询