关于在query中插入数据的问题.(50分)

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

xyt

Unregistered / Unconfirmed
GUEST, unregistred user!
本人运用sql 向business表插入3条记录
语句如下:
定义过程 procedure selectfrom;
procedure tform1.selectfrom(sender:tobject);
begin
query1.close;
query1.sql.add('select * from business');
query1.open;
end;

插入键button1的语句如下
procedure TForm1.Button1Click(Sender: TObject);
var
machstr,ownername:string;
valuestr:string;
begin
query1.Close;
query1.sql.clear;
query1.sql.add('insert into business(machname,owner,value)values');
machstr:=edtmchname.text;
ownername:=edtowner.text;
valuestr:=trim(edtvalue.text);
machstr:='('''+machstr+''','+''''+ownername+''''+','+valuestr+')';
query1.sql.add(machstr);
query1.execsql;
selectfrom(sender);
end;

运行可通过,当我输入值machstr,ownername,valuestr,按下插入键
时出现 project project1.exe raised exception class edbengineerron
with message 'invalid use of keyword token:value)values
('intel 133','xyt',20000) line numver:1',process stopped
use step or run to contiune
望各位高手不啬指教。


 
可能是数据类型的问题,在用SQL语句时,尽量采用参数形式:
上述程序可以这样写:
procedure TForm1.Button1Click(Sender: TObject);
var
machstr,ownername:string;
valuestr:string;
begin
query1.Close;
query1.sql.clear;
query1.sql.add('insert into business(machname,owner,value)values');
query1.sql.add(':machname,:owner,:value');
query1.ParamByName('machname').AsString := edtmchname.text;
query1.ParamByName('owner').AsString := edtowner.text;
query1.ParamByName('value').AsInteger := StrtoInt(trim(edtvalue.text));//如果Value是整形的话
query1.execsql;
selectfrom(sender);
end
 
value 是保留字,你可以取另外的名字作为字段名
 
多人接受答案了。
 
后退
顶部