with adoquery1 do begin close; sql.text:='select pswd from t_user where user='''+l_user+''''; open; end; if adoquery1.fields[0].asstring=l_password then begin ....//用户密码正确 end;
var num,user,pass,temp:string; begin user := Trim(edit1.Text); pass := Trim(edit2.Text); with adoquery1 do begin Close; sql.Clear; sql.Text := 'select 用户编号 from 登陆清单 where 姓名='''+user+'''and 密码='''+pass+''''; Open; temp := adoquery1.fieldbyname('用户编号').AsString; if temp<>'' then begin mainform.N4.Enabled := false; mainform.N5.Enabled := false; mainform.N6.Enabled := false; mainform.N9.Enabled := false; //mainform.N10.Enabled := false; mainform.N11.Enabled := false; mainform.N13.Enabled := false; mainform.N16.Enabled := false; mainform.N17.Enabled := false; mainform.N19.Enabled := false; //查看是否具有管理权限 with adoquery1 do begin Close; sql.Clear; sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''管理权限'''; Open; if fieldbyname('权限序号').AsString<>'' then mainform.N5.Enabled := true; end; //检查是否具有添加权限 with adoquery1 do begin Close; sql.Clear; sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''添加权限'''; Open; if fieldbyname('权限序号').AsString<>'' then mainform.N9.Enabled := true; end; //检查是否具有搜索权限 with adoquery1 do begin Close; sql.Clear; sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''搜索权限'''; Open; if fieldbyname('权限序号').AsString<>'' then mainform.N20.Enabled := true; end; //检查是否具有查看权限 with adoquery1 do begin Close; sql.Clear; sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看权限'''; Open; if fieldbyname('权限序号').AsString<>'' then mainform.N11.Enabled := true; end; //检查是否具有查看照片权限 with adoquery1 do begin Close; sql.Clear; sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看照片权限'''; Open; if fieldbyname('权限序号').AsString<>'' then mainform.N13.Enabled := true; end; //检查是否具有阅读帮助权限 with adoquery1 do begin Close; sql.Clear; sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''阅读帮助权限'''; Open; if fieldbyname('权限序号').AsString<>'' then mainform.N16.Enabled := true; mainform.N17.Enabled := true; end; //插件是否具有查看版本权限 with adoquery1 do begin Close; sql.Clear; sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看版本权限'''; Open; if fieldbyname('权限序号').AsString<>'' then mainform.N19.Enabled := true; end; mainform.Show; login2.Hide; mainform.StatusBar1.Panels[1].Text := edit1.Text; end; end;一本书上的源代码,你自己看看,然后比着改成你那个样子就行了 很简单的 edit1 edit2分别是用户名和密码
procedure yanzheng(id,password: string); var sql: string; begin sql:= format('select * from t_user where user=''%s'' and pswd=''%s''',[id,password]); try adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add(sql); adoquery1.open; if adoquery1.recordcount = 1 then showmessage('OK'); except showmessage('database error'); end; end;
procedure Tlogin.Button1Click(Sender: TObject); var 1_user,1_password,temp:string; begin 1_user:=edit1.Text; 1_password:=edit2.Text; adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.add('select user from T_user'); adoquery1.SQL.Add('where user='''+1_user+''' and 密码='''+1_password+''''); adoquery1.Open; temp:=adoquery1.fieldbyname('user').AsString; if temp='' then begin showmessage('用户名或密码错误,请重新登陆'); edit1.Clear; edit2.clear; end else begin mainform.visible:=true; login.Hide; end;
adoquery1.SQL.Add('where user='''+1_user+''' and 密码='''+1_password+'''');这句有点不明白呀,怎么那么多'号,意思应该是user=l_user并且密码=l_password,分号我晕
我都给你写了,你好好看了吗?试了吗? sql:= format('select * from t_user where user=''%s'' and pswd=''%s''',[id,password]);
adoquery1.SQL.Add('where user='''+1_user+''' and 密码='''+1_password+''''); 这句有点不明白呀,怎么那么多'号 -----------------------------------Delphi中字符串是以''包含的,那么如何标识一个字符串中的'号呢?只有用转义字符'号了, 另外sql语句中,如果字段是字符串型,那么它们的取值也要用''包括。
le1982sina.com 谢谢高手,555555
晕,高手帮忙啊,老说我adoquery1:field("uid")找不到,晕,怎么会这样啊 var l_user,l_password,temp:string; begin ADOConnection1.ConnectionString :='SQLOLEDB.1;Persist Security Info=False;User ID=l;Initial Catalog=mysql;Data Source=LYJ'; l_user:=trim(edit1.Text); l_password:=trim(edit2.Text); adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.add('select user from T1'); adoquery1.SQL.Add('where uid='''+l_user+''' and psw='''+l_password+''''); adoquery1.Open; temp:=adoquery1.fieldbyname('uid').AsString ;//出错就停留在这个地方 if temp='' then begin showmessage('用户名或密码错误,请重新登陆'); edit1.Clear; edit2.clear; end else begin timer1.Enabled :=true; end;
去www.playicq.cn上大把这样的例子
adoquery1.SQL.add('select user from T1'); adoquery1.SQL.Add('where uid='''+l_user+''' and psw='''+l_password+''''); adoquery1.Open; temp:=adoquery1.fieldbyname('uid').AsString ;//出错就停留在这个地方晕能不出错吗,你只select user,你怎么可能fieldbyname('uid')呢?select user,uid from t1 where ......试试。 再者说了,你取出它有什么用吗?它根据用户输入的id和password去数据库查询,返回结果集,如果结果集为0不就说明验证错误吗??为什么要把uid取出来呢。
begin
close;
sql.text:='select pswd from t_user where user='''+l_user+'''';
open;
end;
if adoquery1.fields[0].asstring=l_password then
begin
....//用户密码正确
end;
num,user,pass,temp:string;
begin
user := Trim(edit1.Text);
pass := Trim(edit2.Text); with adoquery1 do
begin
Close;
sql.Clear;
sql.Text := 'select 用户编号 from 登陆清单 where 姓名='''+user+'''and 密码='''+pass+'''';
Open;
temp := adoquery1.fieldbyname('用户编号').AsString;
if temp<>'' then
begin
mainform.N4.Enabled := false;
mainform.N5.Enabled := false;
mainform.N6.Enabled := false;
mainform.N9.Enabled := false;
//mainform.N10.Enabled := false;
mainform.N11.Enabled := false;
mainform.N13.Enabled := false; mainform.N16.Enabled := false;
mainform.N17.Enabled := false;
mainform.N19.Enabled := false; //查看是否具有管理权限
with adoquery1 do
begin
Close;
sql.Clear;
sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''管理权限''';
Open;
if fieldbyname('权限序号').AsString<>'' then
mainform.N5.Enabled := true;
end;
//检查是否具有添加权限
with adoquery1 do
begin
Close;
sql.Clear;
sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''添加权限''';
Open;
if fieldbyname('权限序号').AsString<>'' then
mainform.N9.Enabled := true;
end;
//检查是否具有搜索权限
with adoquery1 do
begin
Close;
sql.Clear;
sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''搜索权限''';
Open;
if fieldbyname('权限序号').AsString<>'' then
mainform.N20.Enabled := true;
end;
//检查是否具有查看权限
with adoquery1 do
begin
Close;
sql.Clear;
sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看权限''';
Open;
if fieldbyname('权限序号').AsString<>'' then
mainform.N11.Enabled := true;
end;
//检查是否具有查看照片权限
with adoquery1 do
begin
Close;
sql.Clear;
sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看照片权限''';
Open;
if fieldbyname('权限序号').AsString<>'' then
mainform.N13.Enabled := true;
end;
//检查是否具有阅读帮助权限
with adoquery1 do
begin
Close;
sql.Clear;
sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''阅读帮助权限'''; Open;
if fieldbyname('权限序号').AsString<>'' then
mainform.N16.Enabled := true;
mainform.N17.Enabled := true;
end;
//插件是否具有查看版本权限
with adoquery1 do
begin
Close;
sql.Clear;
sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看版本权限''';
Open;
if fieldbyname('权限序号').AsString<>'' then
mainform.N19.Enabled := true;
end;
mainform.Show;
login2.Hide;
mainform.StatusBar1.Panels[1].Text := edit1.Text;
end;
end;一本书上的源代码,你自己看看,然后比着改成你那个样子就行了
很简单的
edit1 edit2分别是用户名和密码
var
sql: string;
begin
sql:= format('select * from t_user where user=''%s'' and pswd=''%s''',[id,password]);
try
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(sql);
adoquery1.open;
if adoquery1.recordcount = 1 then showmessage('OK');
except
showmessage('database error');
end;
end;
var 1_user,1_password,temp:string;
begin
1_user:=edit1.Text;
1_password:=edit2.Text;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.add('select user from T_user');
adoquery1.SQL.Add('where user='''+1_user+''' and 密码='''+1_password+'''');
adoquery1.Open;
temp:=adoquery1.fieldbyname('user').AsString;
if temp='' then
begin
showmessage('用户名或密码错误,请重新登陆');
edit1.Clear;
edit2.clear;
end
else
begin
mainform.visible:=true;
login.Hide;
end;
sql:= format('select * from t_user where user=''%s'' and pswd=''%s''',[id,password]);
这句有点不明白呀,怎么那么多'号
-----------------------------------Delphi中字符串是以''包含的,那么如何标识一个字符串中的'号呢?只有用转义字符'号了,
另外sql语句中,如果字段是字符串型,那么它们的取值也要用''包括。
var l_user,l_password,temp:string;
begin
ADOConnection1.ConnectionString :='SQLOLEDB.1;Persist Security Info=False;User ID=l;Initial Catalog=mysql;Data Source=LYJ';
l_user:=trim(edit1.Text);
l_password:=trim(edit2.Text);
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.add('select user from T1');
adoquery1.SQL.Add('where uid='''+l_user+''' and psw='''+l_password+'''');
adoquery1.Open;
temp:=adoquery1.fieldbyname('uid').AsString ;//出错就停留在这个地方
if temp='' then
begin
showmessage('用户名或密码错误,请重新登陆');
edit1.Clear;
edit2.clear;
end
else
begin
timer1.Enabled :=true;
end;
adoquery1.SQL.Add('where uid='''+l_user+''' and psw='''+l_password+'''');
adoquery1.Open;
temp:=adoquery1.fieldbyname('uid').AsString ;//出错就停留在这个地方晕能不出错吗,你只select user,你怎么可能fieldbyname('uid')呢?select user,uid from t1 where ......试试。
再者说了,你取出它有什么用吗?它根据用户输入的id和password去数据库查询,返回结果集,如果结果集为0不就说明验证错误吗??为什么要把uid取出来呢。