登陆问题,高手进来回答

mengqifeng 2003-06-11 08:39:16
procedure TForm2.BitBtn1Click(Sender: TObject);
var
sql:string;
begin



if combobox1.Text='' then //用户名为空
combobox1.SetFocus
else
begin
sql:='';
sql:='select * from 操作员信息表';
sql:=sql+' where (name='''+combobox1.Text+''') and (pwd='''+edit2.Text+''') ';
adoquery1.Close;
adoquery1.SQL.Add(sql);
adoquery1.Open; //查询与用户名对应的密码

if (adoquery1.RecordCount<>1) or
(edit2.Text<>adoquery1.FieldValues['pwd']) then
begin
showmessage('口令错误,请重新输入');
adoquery1.Close;
end
else showmessage('测试成功');
end;


end;
...全文
53 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengqifeng 2003-06-12
  • 打赏
  • 举报
回复
(name='system') and (pwd='1') 第一次输入密码为1,提示错误信息
name='system') adn (pwd='2')'' 第二次输入密码2,出现上述异常

mengqifeng 2003-06-12
  • 打赏
  • 举报
回复
异常:
project project1.ext raised exception class EoleException with

message'[microsoft][odbc microsoft access driver] syntax error

in query expression'(name='system') and (pwd='1')

select * from 操作员信息表 where (name='system') adn (pwd='2')''.

process stopped.use step or run to continue.
sduzjw 2003-06-12
  • 打赏
  • 举报
回复
用adoquery1.parameters.paramvalues['param']:=paramvalue;试一下
angle097113 2003-06-12
  • 打赏
  • 举报
回复
sql:=sql+' where name='+''''+combobox1.Text+''''; 不理解,这里的引号有必要加上吗?
LeonLin 2003-06-12
  • 打赏
  • 举报
回复
是什么樣的異常﹖﹖
mengqifeng 2003-06-12
  • 打赏
  • 举报
回复
结帖了,谢谢兄弟们的鼎立相助,非常感谢
lasmai 2003-06-12
  • 打赏
  • 举报
回复
adoquery1.SQL.clear;
mengqifeng 2003-06-12
  • 打赏
  • 举报
回复
to:dh9450(谁有我菜)

结果都是一样的,我都试过了,

会不会是资源释放问题呢
dh9450 2003-06-12
  • 打赏
  • 举报
回复
为什么写SQL的时候一定要两个条件都匹配呢 既然是combobox1选的用户名 直接把这条记录查出来后 再比较不行吗
select * from 操作员信息表 where (name='system') and (pwd='2')''
如果你的密码输入错误的话 也就是说'sysytem'这条记录的‘pwd’字段值不是2的话 这句是查不出记录的 也就是返回一个空数据集 因为没有同时匹配两个条件的 记录存在
Northwindrocker 2003-06-11
  • 打赏
  • 举报
回复
procedure TForm2.BitBtn1Click(Sender: TObject);
var
sql:string;
begin



if combobox1.Text='' then //用户名为空
combobox1.SetFocus
else
begin
sql:='';
sql:='select * from 操作员信息表';
sql:=sql+' where (name='''+combobox1.Text+''') and (pwd='''+edit2.Text+''') ';
adoquery1.Close;
adoquery1.SQL.Add(sql);
adoquery1.Open; //查询与用户名对应的密码

if (adoquery1.RecordCount<>1) or
(edit2.Text<>adoquery1.FieldValues['pwd']) then//or后面的条件是多余的
begin
showmessage('口令错误,请重新输入');
adoquery1.Close;
end
else showmessage('测试成功');
end;


end;
dawnming 2003-06-11
  • 打赏
  • 举报
回复
帮你顶一下
dh9450 2003-06-11
  • 打赏
  • 举报
回复
if combobox1.Text='' then //用户名为空
combobox1.SetFocus
else
begin
sql:='';
sql:='select pwy from 操作员信息表';
sql:=sql+' where name='+''''+combobox1.Text+'''';
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add(sql);
adoquery1.Open; //查询与用户名对应的密码

if adoquery1.FieldByName('pwd').Value<> edit2.text then
begin
showmessage('口令错误,请重新输入');
end
else showmessage('测试成功');
end;
试试

end;
dh9450 2003-06-11
  • 打赏
  • 举报
回复
提示什么?
mengqifeng 2003-06-11
  • 打赏
  • 举报
回复
如果第一次登陆的密码错误,在登陆时会出现异常

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧