我是初学者,大家帮我看一下这哪里错啦,它提示是insert into语法错误(100分)

  • 主题发起人 主题发起人 xuesan
  • 开始时间 开始时间
X

xuesan

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Edit8: TEdit;
Label9: TLabel;
Edit9: TEdit;
Label10: TLabel;
Edit10: TEdit;
Label11: TLabel;
Edit11: TEdit;
Label12: TLabel;
Edit12: TEdit;
Label13: TLabel;
Edit13: TEdit;
Label14: TLabel;
Memo1: TMemo;
Label15: TLabel;
Memo2: TMemo;
Button1: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('insert user values (:用户名,:公司名称,:联系人,:电话和传真,:电子邮箱,:OICQ,:详细地址,:会员开始时间,:会员到期时间,:操作时间,:本站使用的服务,:备注说明,:每年总费用,:年利润,:总利润,:用户ID');
Parameters.ParamByName('用户ID').Value:=trim(edit1.Text);
Parameters.ParamByName('用户名').Value:=trim(edit2.Text);
Parameters.ParamByName('公司名称').Value:=trim(edit3.Text);
parameters.ParamByName('联系人').value:=trim(edit4.text);
parameters.ParamByName('电话和传真').Value:=trim(edit5.text);
parameters.parambyname('电子邮箱').value:=trim(edit6.text);
parameters.ParamByName('OICQ').Value:=trim(edit7.text);
parameters.parambyname('详细地址').value:=trim(edit8.text);
parameters.parambyname('会员开始时间').value:=trim(edit9.text);
parameters.parambyname('会员到期时间').value:=trim(edit10.text);
parameters.parambyname('每年总费用').value:=trim(edit11.text);
parameters.parambyname('年利润').value:=trim(edit12.text);
parameters.parambyname('总利润').value:=trim(edit13.text);
parameters.parambyname('本站使用的服务').value:=trim(memo1.text);
parameters.parambyname('备注说明').value:=trim(memo2.text);
parameters.parambyname('操作时间').value:=now();
execsql;
showmessage('添加成功!');
end;
except
showmessage('添加失败!');
end;
end;
end.
 
insert into TABLENAME
values(.......)
 
user就是表名
我把insert改成insert into还是不行
 
sql.Add('insert into user (用户名,公司名称,联系人,电话和传真,电子邮箱,OICQ,详细地址,会员开始时间,会员到期时间,操作时间,本站使用的服务,备注说明,每年总费用,年利润,总利润,用户ID) values (:用户名,:公司名称,:联系人,:电话和传真,:电子邮箱,:OICQ,:详细地址,:会员开始时间,:会员到期时间,:操作时间,:本站使用的服务,:备注说明,:每年总费用,:年利润,:总利润,:用户ID');

命令应该这样吧 ,
insert into tablename(fieldnames ...) values (values...)
 
表名user加上[],即用 insert [user] values (...)试试看
 
插入表有两种情况:
1.Insert into TableName(field1..fieldn)
values(value1..valuen)
2.Insert into TableName(field1..fieldn)
select field1..fieldn
from .....
上面两种情况没有指明Insert into TableName的字段,期字段是表中字段默认次序
 
[red]试了你们的方法,还是不行哦。。。[/red][:(]
 
把错误提示贴出来。。。
 
现我把SQL语句改为
sql.Add('insert into [user] (用户名,公司名称,联系人,电话和传真,电子邮箱,OICQ,详细地址,会员开始时间,会员到期时间,操作时间,本站使用的服务,备注说明,每年总费用,年利润,总利润,用户ID) values (:用户名,:公司名称,:联系人,:电话和传真,:电子邮箱,:OICQ,:详细地址,:会员开始时间,:会员到期时间,:操作时间,:本站使用的服务,:备注说明,:每年总费用,:年利润,:总利润,:用户ID');

错误是:[错误] Unit1.pas(65): String literals may have at most 255 elements
[致命错误] Project1.dpr(5): Could not compile used unit 'Unit1.pas'



把SQL语句改为
Add('insert [user] values (:用户名,:公司名称,:联系人,:电话和传真,:电子邮箱,:OICQ,:详细地址,:会员开始时间,:会员到期时间,:操作时间,:本站使用的服务,:备注说明,:每年总费用,:年利润,:总利润,:用户ID');

错误提示是:[致命错误] Could not create output file 'F:/delphi自学习文档/新建文件夹/Project1.exe'
 
参数 :用户ID 后面明显少了一个 )
应该为:
sql.Add('insert into [user] (用户名,公司名称,联系人,电话和传真,电子邮箱,OICQ,详细地址,会员开始时间,会员到期时间,操作时间,本站使用的服务,备注说明,每年总费用,年利润,总利润,用户ID) values (:用户名,:公司名称,:联系人,:电话和传真,:电子邮箱,:OICQ,:详细地址,:会员开始时间,:会员到期时间,:操作时间,:本站使用的服务,:备注说明,:每年总费用,:年利润,:总利润,:用户ID)');
----看错误提示,应该是编译时这行发生的错误。要不把语句改为如下试试:
SQL.Text := 'insert into [user] (用户名,公司名称,联系人,电话和传真,电子邮箱,OICQ,详细地址,会员开始时间,会员到期时间,操作时间,本站使用的服务,备注说明,每年总费用,年利润,总利润,用户ID) values (:用户名,:公司名称,:联系人,:电话和传真,:电子邮箱,:OICQ,:详细地址,:会员开始时间,:会员到期时间,:操作时间,:本站使用的服务,:备注说明,:每年总费用,:年利润,:总利润,:用户ID)';
另外,检查一下引号是不是半角字符。。。
 
错误是:[错误] Unit1.pas(65): String literals may have at most 255 elements
这样的错误是行太长 ,你应该分行
sql.Add('insert into [user] (用户名,公司名称,联系人,电话和传真,电子邮箱,OICQ,详细地址,会员开始时间,会员到期时间,操作时间,本站使用的服务,备注说明,每年总费用,年利润,总利润,用户ID) '+

' values (:用户名,:公司名称,:联系人,:电话和传真,:电子邮箱,:OICQ,:详细地址,:会员开始时间,:会员到期时间,:操作时间,:本站使用的服务,:备注说明,:每年总费用,:年利润,:总利润,:用户ID');
 
'F:/delphi自学习文档/新建文件夹路径不存在或者Project1.exe已经打开,改一下:Project-->Options...
 
超出了255的SQL语句,你把语句分行后,保证没问题。
 
把你的中文名用英文代替试试,如:用户名 -->> :UserName;
 
太麻烦了.直接用 DataSet.Append;
Dataset.Post 好了.
 
谢谢各位的热心帮助
 
后退
顶部