关于ADOquery的查询 ,急!急!急!急!急!急!(100分)

  • 主题发起人 主题发起人 wqlaibin
  • 开始时间 开始时间
W

wqlaibin

Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁,我做了一个登录界面
这是我的源代码很简单
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
times:=times+1;
with query1do
begin
close;
sql.Clear;
sql.Add('select 用户名,密码,权限''from user where 用户名=:use');
query1.Parameters.ParamByName('use').Value:=edit1.Text;
open;
if query1.Fields[0].Value=null then
begin
messagebox(form1.Handle,'请确认用户名和密码是否正确!','提示!',mb_ok+mb_iconerror);
end;
if query1.Fields[0].Value=edit2.Text then
begin
if query1.Fields[1].Value='管理员' then
begin
form1.Hide;
guanli.Show;
end
else
begin
form1.Hide;
fuwu.Show;
end;
end
else
begin
showmessage('密码错误!');
end;
end;
end;
运行程序的时候出现异常信息“query1:parameters'use'not found“,我在query组件的属性也设置了parameter。
但如果表user的字段都是英文的话就不会出现这种异常了。这是怎么回事?
 
最好不要用中文做字段名,还有,不要用user做表名,这些很敏感.
 
sql.Add('select 用户名,密码,权限''from user where 用户名=:use');
query1.Parameters.ParamByName('use').Value:=edit1.Text;
===>>>>
sql.Add('select 用户名,密码,权限 from user where 用户名=' + QuotedStr(edit1.Text));
 
在窗体创建的时候,读取User表,当用户点击按钮的时候,用Locate在User表里面找!
 
1/少用中文字段
2/少用动态给值
3/试下修改
sql.Add('select 用户名,密码,权限 from user where 用户名='+''''+edit1.text+'''');
if query1.EOF then
//如为空,则
 
if query1.Fields[0].Value=null then
begin
messagebox(form1.Handle,'请确认用户名和密码是否正确!','提示!',mb_ok+mb_iconerror);
end;
if query1.Fields[0].Value=edit2.Text then
begin
if query1.Fields[1].Value='管理员' then
begin
form1.Hide;
guanli.Show;
end
else
begin
form1.Hide;
fuwu.Show;
end;
end
else
begin
showmessage('密码错误!');
end;
end;
在这里不要这样用啊~!~!~1
if query1.record=1 then
if query1.fieldbyname('密码').value=edit2.text then
begin
form1.Hide;
guanli.Show;
end
else
begin
form1.Hide;
fuwu.Show;
end;
end
else
begin
showmessage('密码错误!');
end;

end;
 
只有一个办法改用英文字段;注意SQL不要用中文字段.
 
建议用 [] 包住字段或表名

select * from [user] where [id]=1
 
后退
顶部