to : zurich1979(笨得可以) for ( int i=0;i<10;i++ ) for ( int j =0;j<10;j++) { insert into (b01,b02,...b0j) values(A[i][0],A[i][1],A[i][j]); } 我觉得这样应该可以阿,一万五千行不用多线程吧,那么麻烦你的这种方法要访问数据库一万五千次,如果机子的性能不高的话那将要八分钟左右,很慢的。
to :LG0927() 该怎么写存储过程呢 "insert into (b01,b02,...b0j) values(A[i][0],A[i][1],A[i][j]); " 是这样吗,那也很慢啊!
未经测试 var a:array[i,j] of integer; row,list:integer; str:string; begin str:=''; for row:=1 to i do begin for list:=1 to j do str:=str+strlist[j]+','; end; str:=copy(str,1,length(str)-1); with adoquery1 do begin close; sql.clear; sql.add('select '''+str+''' into 表名'); execsql; end; end;
先插入一临时表,再插入正式表,使用sql语句要好些
再转的话就使用insert into正式表 select * from 临时表 道理和插入正式表一样的 可以使用stringlist变成一唯的,在插入表中
for ( int j =0;j<10;j++)
{
insert into (b01,b02,...b0j) values(A[i][0],A[i][1],A[i][j]);
}
我觉得这样应该可以阿,一万五千行不用多线程吧,那么麻烦
可以试试ADO的BatchUpdate方法,会比一条条sql语句执行的快很多。
for ( int i=0;i<10;i++ )
for ( int j =0;j<10;j++)
{
insert into (b01,b02,...b0j) values(A[i][0],A[i][1],A[i][j]);
}
我觉得这样应该可以阿,一万五千行不用多线程吧,那么麻烦你的这种方法要访问数据库一万五千次,如果机子的性能不高的话那将要八分钟左右,很慢的。
该怎么写存储过程呢
"insert into (b01,b02,...b0j) values(A[i][0],A[i][1],A[i][j]);
"
是这样吗,那也很慢啊!
var
a:array[i,j] of integer;
row,list:integer;
str:string;
begin
str:='';
for row:=1 to i do
begin
for list:=1 to j do
str:=str+strlist[j]+',';
end;
str:=copy(str,1,length(str)-1);
with adoquery1 do
begin
close;
sql.clear;
sql.add('select '''+str+''' into 表名');
execsql;
end;
end;
道理和插入正式表一样的
可以使用stringlist变成一唯的,在插入表中
使用stringlist,和直接insert into有什么区别呢?
会让速度快吗?
如果可能,把数据放到存储过程里去分析,就更快了!
这样子的存储过程该如何写啊!