最近在搞毕业设计,现在出现点问题 ,如下是我的登录界面代码,运行时,输入用户名,和密码 ,总是提示说 sql附件有语法错误,麻烦大家帮忙看看谢谢了 很急 无法进展了
unit login;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;type
TLogin_Form = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
name_edit: TEdit;
password_edit: TEdit;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
// procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Login_Form: TLogin_Form;implementation
uses main;{$R *.dfm}procedure TLogin_Form.Button2Click(Sender: TObject);
begin
name_edit.Clear;
password_edit.Clear;end;procedure TLogin_Form.FormCreate(Sender: TObject);
beginend;{procedure TLogin_Form.Button1Click(Sender: TObject);
var
aname,apassword,sqlstr:string;
a,b:integer;begin
aname:=trim(name_edit.Text);
apassword:=trim(password_edit.Text);
sqlstr:='seclect * from [user]'
with tquery.Create();
end;}procedure TLogin_Form.Button1Click(Sender: TObject);
var
aname,apassword,sqlstr:string;
a,b:integer;
begin
if(length(trim(name_edit.Text))>0) or (length(trim(password_edit.Text))>0) then
begin
aname:=trim(name_edit.Text);
apassword:=trim(password_edit.Text);
//
sqlstr:='seclect b.* from [user] a,[qxb] b where (a.yhm="'+aname+'") and (a.mm="'+apassword+'") and (a.yhm=b.yhm) order by b.cdx';
with tquery.Create(nil) do
begin
try
//
sessionname:=main_form.Database1.SessionName;
databasename:=main_form.Database1.DatabaseName;
close;
sql.Clear;
sql.Add(sqlstr);
active:=true;
//
if recordcount >0 then
begin
first;
while not Eof do
begin
a:=strtoint(copy(fieldbyname('cdx').AsString,1,1));
b:=strtoint(copy(fieldbyname('cdx').AsString,2,2));
//
main_form.MainMenu1.Items.Items[a].Visible:=true;
main_form.MainMenu1.Items.Items[a].Items[b].Visible:=true;
next;
end;
//
login_form.Close;
main_form.StatusBar1.SimpleText:=aname;
main_form.dlname:=aname;
end
else
begin
showmessage('请确认登录用户和密码正确');
name_edit.SetFocus;
name_edit.SelectAll;
end;
finally
free;
end;
end;
end
else
begin
showmessage('请输入登录用户名和密码');
name_edit.SelectAll;
end;
end;end.
unit login;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;type
TLogin_Form = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
name_edit: TEdit;
password_edit: TEdit;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
// procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Login_Form: TLogin_Form;implementation
uses main;{$R *.dfm}procedure TLogin_Form.Button2Click(Sender: TObject);
begin
name_edit.Clear;
password_edit.Clear;end;procedure TLogin_Form.FormCreate(Sender: TObject);
beginend;{procedure TLogin_Form.Button1Click(Sender: TObject);
var
aname,apassword,sqlstr:string;
a,b:integer;begin
aname:=trim(name_edit.Text);
apassword:=trim(password_edit.Text);
sqlstr:='seclect * from [user]'
with tquery.Create();
end;}procedure TLogin_Form.Button1Click(Sender: TObject);
var
aname,apassword,sqlstr:string;
a,b:integer;
begin
if(length(trim(name_edit.Text))>0) or (length(trim(password_edit.Text))>0) then
begin
aname:=trim(name_edit.Text);
apassword:=trim(password_edit.Text);
//
sqlstr:='seclect b.* from [user] a,[qxb] b where (a.yhm="'+aname+'") and (a.mm="'+apassword+'") and (a.yhm=b.yhm) order by b.cdx';
with tquery.Create(nil) do
begin
try
//
sessionname:=main_form.Database1.SessionName;
databasename:=main_form.Database1.DatabaseName;
close;
sql.Clear;
sql.Add(sqlstr);
active:=true;
//
if recordcount >0 then
begin
first;
while not Eof do
begin
a:=strtoint(copy(fieldbyname('cdx').AsString,1,1));
b:=strtoint(copy(fieldbyname('cdx').AsString,2,2));
//
main_form.MainMenu1.Items.Items[a].Visible:=true;
main_form.MainMenu1.Items.Items[a].Items[b].Visible:=true;
next;
end;
//
login_form.Close;
main_form.StatusBar1.SimpleText:=aname;
main_form.dlname:=aname;
end
else
begin
showmessage('请确认登录用户和密码正确');
name_edit.SetFocus;
name_edit.SelectAll;
end;
finally
free;
end;
end;
end
else
begin
showmessage('请输入登录用户名和密码');
name_edit.SelectAll;
end;
end;end.
sqlstr:='seclect b.* from [user] a,[qxb] b where (a.yhm="'+aname+'") and (a.mm="'+apassword+'") and (a.yhm=b.yhm) order by b.cdx';
我不知道是不是这句有语法错误
sqlstr:='seclect b.* from [user] a,[qxb] b where (a.yhm="'+aname+'") and (a.mm="'+apassword+'") and (a.yhm=b.yhm) order by b.cdx';
我不知道是不是这句有语法错误
再编写DELPHI代码的
a.yhm="'+aname+'",不能用双引号,用两个单引号。
应该改为
'''+aname+'''
,
为了安全,最好改为
'+quotedstr(aname)+'