空格掉了
sql.add('insert into e_basic (name,code) ');
sql.add('values(:ename,:ecode) ');
sql.add('insert into e_basic (folk,clan) ');
sql.add('values(:nationality,:homeplace)');
而且你两个Sql这样连写似乎有问题吧
sql.add('insert into e_basic (name,code) ');
sql.add('values(:ename,:ecode) ');
sql.add('insert into e_basic (folk,clan) ');
sql.add('values(:nationality,:homeplace)');
而且你两个Sql这样连写似乎有问题吧
解决方案 »
- mwy654321(无条件为你)进来领分!二个问题
- 怎样实现类似金山词霸在任何文档都能在鼠标处显示英文注译?
- 简单的问题
- 奇怪的四舍五入函数(有趣的话题)
- 如何得到在dll程序中找到自己的绝对路径?
- DELPHI在BUILD时是否有Debug和Release版本之分?
- 我的一个MM同事提的问题,我是没能解决?????????????????
- Help me !!! 50分
- 求教:请问如何在我的Package中引用某一个文件,具体过程是怎样的?
- for i:=0 to 9 是递增1循环,如何递增2呢?如何递减呢
- 一个可爱的问题Win2000下的API
- 来者有分,请大家帮讲讲TSplitter的用法了
为什么不insert into e_basic (name,code,folk,clan)...
因为我表中的字段比较多,写一个sql insert的话太长了,所以想分开来写。
还有是不是可以不用params.paramvalues呀,直接在values后写name.text,code.text...等呢?
with datamodule1.e_basicquery do
begin
mysql:='insert into e_basic (ename,ecode,sex,birthday,edulevel,specialty,'+
'nationality,homeplace,folk,clan,wedlock,address,zipcode,phone,'+
'edcard,archivesid,relation) '+
'values (ename.text,ecode.text,sexfield,'+
'formatdatetime(''yyyy-mm-dd'',birthday.Date),'+
'edulevel.text,specialty.text,nationality.text,homeplace.text,'+
'folk.text,clan.text,wedlock.text,address.Text,zipcode.text,'+
'phone.text,idcard.text,archivesid.text,relation.text)';
sql.clear;
sql.add(mysql);
execsql;
applyupdates;
commitupdates;
end;
var SqlStr: widestring;
SqlStr:= '';
with datamodule1.query1 do
begin
close;
sql.clear;
SqlStr:= 'insert into e_basic (name,code,folk,clan) '
SqlStr:= SqlStr+'values('+Name.Text+','+Code.Text+','+folk.Text+','+Clan.Text+')';
Sql.Add(SqlStr);
ExceSql();
end;
Good job.
那我后来改的程序(在你回复的上面)错在哪里呀,是不是一定要写成('+Name.Text+','+Code.Text+','+folk.Text+','+Clan.Text+')'格式呀?
若你用个string 变量,注意要加空格,例如
str:='insert into table1 (name)';
str:=str+' values(.....)';
^^
直接用sql.add,可以不加空格
sql.add('insert into table1 (name);
sql.add('value(...)';
const
SQLString='insert into myTable(Field1,Field2...) Values(''%s'',%s,%d,%f)';with Query1 do
begin
SQL.Text := Format(SQLString, [edit1.text,edit2.text,35,235.00103]);
ExecSQL;
end;
多方便。呵呵
const
SQLString= 'insert into myTable(FieldName1,FieldName2.....)' + #13 +
'Value(%s,''%s'',%d, %f' + #13 +
'%s,%s)' + #13 +
'where ...';加个#13就可以了。
SQL管它换不换行了语法对了就行了。
注意的地方是:%s和''%s'',你在执行的时候,用S:=SQL.Text;Inputquery('','',S);然后copy出来调试一下。
const
SQLString= 'insert into test(edulevel,nationality,' + #13 +
'folk,clan)'+ #13 +
'Value(%s,%s,%s,%s)';
begin
with Query1 do
begin
SQL.Text := Format(SQLString, [edit1.text,edit2.text,edit3.text,edit4.text]);
ExecSQL;
end;
procedure TForm1.Button1Click(Sender: TObject);
var mysql:string;
begin
mysql:='';
mysql:=mysql+'insert into test (edulevel,nationality,';
mysql:=mysql+'folk,clan) values (edit1.text,';
mysql:=mysql+'edit2.text,edit3.text,edit4.test)';
query1.sql.clear;
query1.sql.add(mysql);
query1.ExecSQL;
end;
end.
var mysql:string;
begin
mysql:='insert into test (edulevel,nationality,';
mysql:=mysql+'folk,clan) values ('''+edit1.text;
mysql:=mysql+''','''+edit2.text+''','''+edit3.text+''','''+edit4.test+''')';
query1.sql.clear;
query1.sql.add(mysql);
query1.ExecSQL;
end;
end.
begin
Add('insert into test(字段1,字段2,...........) Values('); // 注意空格;
Add(Format('%s,%s,%s,%s',[Edit1.text,Edit2.text,Edit3.text,Edit4.text]);
Add(')');
end;
Query1.ExecSql;
procedure TForm1.Button1Click(Sender: TObject);
var mysql:string;
begin
with query1 do
begin
sql.clear;
sql.add('insert into test (edulevel,nationality,');
sql.add('folk,clan) values (:p1,:p2,:p3,:p4)');
parambyname('p1').asstring:=edit1.text;
parambyname('p2').asstring:=edit2.text;
parambyname('p3').asstring:=edit3.text;
parambyname('p4').asstring:=edit4.text;
ExecSQL;
end;
end;
你根据我的方式生成Sql语句的话。
sql.add('insert into e_basic (name,code)');
sql.add(' values(:ename,:ecode) ');
execsql;
sql.add('insert into e_basic (folk,clan)');
sql.add(' values(:nationality,:homeplace)');
execsql;
呵呵