总提示缺少分号,多步错误等最后也没有弄出来,举例吧:...
sql := 'create table MyTable (id int,data1 decimal(6,5) )';
...
Query.SQL.Clear;
Query.SQL.Add('Insert into MyTable (id,data1 ) ');///此处不知道如何写for i:=0 to 100 do
Query.SQL.Add(' values ??? ');////此处又如何写呢,最好是写成变量的形式Query.ExecSQL;
sql := 'create table MyTable (id int,data1 decimal(6,5) )';
...
Query.SQL.Clear;
Query.SQL.Add('Insert into MyTable (id,data1 ) ');///此处不知道如何写for i:=0 to 100 do
Query.SQL.Add(' values ??? ');////此处又如何写呢,最好是写成变量的形式Query.ExecSQL;
select a1,b1
union all
select a2,b2
.... 最后再
query1.sql.add(字符串变量)
select 1,1 union
select 2,2
for i:=0 to 100 do
begin
Query.SQL.Add('insert into mytable(id,datal) values(' + editId.text + ', ' + quotedstr(edtDatal.text) + ')');////此处又如何写呢,最好是写成变量的形式
end;
Query.ExecSql;
这里假设id为整数型的,两边不再用加单引号,符点型也不用加单引用
字符串类型,日期类型两边需要加单引号,quotedstr的效果就是给字符串两边加上单引号
...
sql := 'create table MyTable (id int,data1 decimal(6,5) )';
...
Query.clos;
Query.SQL.Clear;
Query.SQL.Add('select * from MYTable');
Query.open;
for i:=0 to 100 do
begin
Query.append;
Query.fieldbyname('id').asinteger:=i;
Query.fieldbyname('data1').value:=data1;//如果是字符型注意转化一下;
...........//你还要插入的其他字段
Query.post;
end;
sql :=sql+') values (';Query.SQL.Add( sql+ '111 ,1.21 )' );
Query.SQL.Add( sql+ '21 ,1.21 )' ); //无此行可以,有此行报分号错误
1楼和3楼都是让你偿试批量提交方式,主要是要组织一下代码,批量提交效率高一些,速度快。
你现在for 是到100,如果到1K,1W,那更加要用批量(再分批量)提交了。
现在for不是1w,可能是百万,
批量和分批量当然是最好的方式了
如果知道access格式,直接写文件是最好的了
insert into MYTable
select 1,1 from dual unoin
select 2,2 from dual
看来我弄出这个还要很长的路要走这个select还是看不懂
就是用5楼add( )照抄也没有成功,我只能在这里哈哈哈大笑了
query.sql.clser;
query.sql.add('create table MyTable (id int,data1 decimal(6,5)');
query.execsql;strSql:='INSERT INTO MyTable(id,data1) '+#13;
For intI:=0 To 99
Begin
strSql:=strSql+'SELECT '+IntToStr(intI)+','+intToStr(intI*10)+' UNION ALL ' +#13;
End;
strSql:=strSql+'SELECT '+IntToStr(100)+','+IntToStr(100*10)
query.close;
query.sql.clear;
query.sql.add(strSql);
query.execsql;
SELECT 1,2 UNION ALL
SELECT 3,4 UNION ALL
SELECT 5,6你只要把这两行
SELECT 1,2 UNION ALL
SELECT 3,4 UNION ALL
在delphi中循环拼接起来就好了。你要传什么值自己写
strSql := 'INSERT INTO MyTable (id,data1) '+#13;
for I := 0 to 99 do
begin
strSql := strSql + 'SELECT ' + IntToStr(I) + ',' + intToStr(I * 10) + ' UNION ALL ' + #13;
end;
strSql := strSql + 'SELECT ' + IntToStr(100) + ',' + IntToStr(100 * 10);
query.close;
query.sql.clear;
query.sql.add(strSql);
query.execsql;
语法错误(操作符丢失)在查询表达式 '0 union all select 1'中
...
sql := 'create table MyTable (id int,data1 decimal(6,5) )';
...
Query.SQL.Clear;
Query.SQL.Add('Insert into MyTable ');for i:=0 to 100 do
Query.SQL.Add(' select '+IntToStr(i)+','+IntToStr(i)+' Union All ');
Query.SQL.Text:=Copy(Query.SQL.Text,1,Length(Query.SQL.Text)-10);
Query.ExecSQL;