unit Unit4;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;type
TForm4 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
ADOQuery1: TADOQuery;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form4: TForm4;implementation{$R *.dfm}procedure TForm4.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select name from member where name =:name');
Parameters.ParamByName('name').Value:=Edit1.Text;
open;
if Recordcount<>0 then
begin
messagedlg('用户名'+Edit1.text+'已存在',mterror,[mbok],0);
edit1.SetFocus;
exit;
end;
close;
end; try
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('insert into member(name,password,address,telephone)'+
' values(:name,:password,:address,:telephone)');
Parameters.ParamByName('name').Value :=Edit1.Text;
Parameters.ParamByName('password').Value :=Edit2.Text;
Parameters.ParamByName('address').Value :=Edit3.Text;
Parameters.ParamByName('telephone').Value :=Strtoint(Edit4.Text);
messagedlg(SQL.Text,mterror,[mbok],0);
ExecSQL;
end; except
messagedlg('注册失败请重新注册',mterror,[mbok],0);
end;
end;procedure TForm4.Button2Click(Sender: TObject);
begin
close;
end;end.
上面是我的程序但是老说的SQL语句错误,但是我发现是后面的附值不进试了几种都不成功希望能帮解决这个问题,或是作个样板发到我的邮箱也行
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;type
TForm4 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
ADOQuery1: TADOQuery;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form4: TForm4;implementation{$R *.dfm}procedure TForm4.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('select name from member where name =:name');
Parameters.ParamByName('name').Value:=Edit1.Text;
open;
if Recordcount<>0 then
begin
messagedlg('用户名'+Edit1.text+'已存在',mterror,[mbok],0);
edit1.SetFocus;
exit;
end;
close;
end; try
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('insert into member(name,password,address,telephone)'+
' values(:name,:password,:address,:telephone)');
Parameters.ParamByName('name').Value :=Edit1.Text;
Parameters.ParamByName('password').Value :=Edit2.Text;
Parameters.ParamByName('address').Value :=Edit3.Text;
Parameters.ParamByName('telephone').Value :=Strtoint(Edit4.Text);
messagedlg(SQL.Text,mterror,[mbok],0);
ExecSQL;
end; except
messagedlg('注册失败请重新注册',mterror,[mbok],0);
end;
end;procedure TForm4.Button2Click(Sender: TObject);
begin
close;
end;end.
上面是我的程序但是老说的SQL语句错误,但是我发现是后面的附值不进试了几种都不成功希望能帮解决这个问题,或是作个样板发到我的邮箱也行
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select name from member where name =:name');
Parameters.ParamByName('name').Value:=Edit1.Text;
open;
if Recordcount<>0 then
begin
messagedlg('用户名'+Edit1.text+'已存在',mterror,[mbok],0);
edit1.SetFocus;
exit;
end;
end; try
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into member(name,password,address,telephone)'+
' values(:name,:password,:address,:telephone)');
Parameters.ParamByName('name').Value :=Edit1.Text;
Parameters.ParamByName('password').Value :=Edit2.Text;
Parameters.ParamByName('address').Value :=Edit3.Text;
Parameters.ParamByName('telephone').Value :=Edit4.Text;
messagedlg(SQL.Text,mterror,[mbok],0);
ExecSQL;
end; except
messagedlg('注册失败请重新注册',mterror,[mbok],0);
end;
end;procedure TForm4.Button2Click(Sender: TObject);
begin
close;
end;
var Name , Password , Address , Telephone
...Name := edit1.text;
Password := edit2.text;
...insert into member (Name , Password , Address , Telephone) values
('''+name+''' , '''+Password+''' , '''+Address+''' , '''+Telephone+''');execSQL;
try
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('insert into member(name,password,address,telephone) values (:name,:password,:address,:telephone)');//你的这句错了,已经验证
Parameters.ParamByName('name').Value :=Edit1.Text;
Parameters.ParamByName('password').Value :=Edit2.Text;
Parameters.ParamByName('address').Value :=Edit3.Text;
Parameters.ParamByName('telephone').Value :=Strtoint(Edit4.Text);
messagedlg(SQL.Text,mterror,[mbok],0);
ExecSQL;
end;
不能这样写。
可改为:
sql.add('insert into member(name,password, address,telphone) values('''+NameStr
+''','''+passwordStr+''','''+addressStr+''','''+TelphoneStr+''')');
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into member(name,password,address,telephone)'+
' values(:name,:password,:address,:telephone)');
Parameters.ParamByName('name').Value :=Edit1.Text;
Parameters.ParamByName('password').Value :=Edit2.Text;
Parameters.ParamByName('address').Value :=Edit3.Text;
Parameters.ParamByName('telephone').Value :=Edit4.Text;
messagedlg(SQL.Text,mterror,[mbok],0);
ExecSQL;
end;
改写为:
with adoqury1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into member(name,password,address,telephone)'+
' values('''+edit1.text+''','''+edit2.text+''','''+edit3.text+''','''+edit4.text''')');
messagedlg(SQL.Text,mterror,[mbok],0);
ExecSQL;
end;
这样应该不会错的!
parambyname('password').等
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;type
TForm4 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
ADOQuery1: TADOQuery;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form4: TForm4;implementation{$R *.dfm}procedure TForm4.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
cative:=false; //****
SQL.Clear;
Params.Clear; //****
Params.CreateParam(ftstring,'name',ptinput).AsString:=Edit1.Text; //****
SQL.Add('select name from member where name =:name;');//***
// Parameters.ParamByName('name').Value:=Edit1.Text; //****
//open; //****
Prepare; ///****
if Recordcount<>0 then
begin
messagedlg('用户名'+Edit1.text+'已存在',mterror,[mbok],0);
edit1.SetFocus;
exit;
end;
close;
end; try
with ADOQuery1 do
begin
close; //****
SQL.Clear;
Params.Clear; //****
Params.CreateParam(ftstring,'name',ptinput).AsString:=Edit1.Text; //****
Params.CreateParam(ftstring,'password',ptinput).AsString:=Edit1.Text;//*
Params.CreateParam(ftstring,'address',ptinput).AsString:=Edit1.Text; //**
Params.CreateParam(ftstring,'telephone',ptinput).AsString:=Edit1.Text;//*
//SQL.Add('insert into member(name,password,address,telephone)'//+应去掉
// ' values(:name,:password,:address,:telephone)');
SQL.Add('insert into member(name,password,address,telephone)
values(:name,:password,:address,:telephone;)'); {///////////////////////////////////////////////////////****
Parameters.ParamByName('name').Value :=Edit1.Text;
Parameters.ParamByName('password').Value :=Edit2.Text;
Parameters.ParamByName('address').Value :=Edit3.Text;
Parameters.ParamByName('telephone').Value :=Strtoint(Edit4.Text);
}
messagedlg(SQL.Text,mterror,[mbok],0);
ExecSQL;
end; except
messagedlg('注册失败请重新注册',mterror,[mbok],0);
end;
end;procedure TForm4.Button2Click(Sender: TObject);
begin
close;
end;end.
(ftstring,'name',ptinput).AsString:=Edit1.Text; //****如上面的那几句应该写成一行,即象
Params.CreateParam(ftstring,'name',ptinput).AsString:=Edit1.Text; //****
尤其是access
加中括号
改成SQL.Add('insert into member([name],[password],address,telephone)'+
' values(:name,:password,:address,:telephone)');
' values('+#39+edit1.text+#39+','+#39+edit2.text+#39+','+#39+edit3.text+#39+','+#39+edit4.text+#39+')');
是不是在delphi里,数据库带自动编号的insert要用什么不同吗