我用如下代码把数组中的数据存入Access数据库中
var
I:Integer;
for i:=0 to length(array1)-1 do
begin
ADOTable1.append;
ADOTable1.FieldValues['数量']:=array1[I]; //数组中大概3千条数据
ADOTable1.FieldValues['年龄']:=array2[I];
ADOTable1.FieldValues['身高']:=array3[I];
ADOTable1.Post;
end;可速度太慢。
在另一个帖子上该问题没得到解决。
各位高手能否提供一段SQL语句。
var
I:Integer;
for i:=0 to length(array1)-1 do
begin
ADOTable1.append;
ADOTable1.FieldValues['数量']:=array1[I]; //数组中大概3千条数据
ADOTable1.FieldValues['年龄']:=array2[I];
ADOTable1.FieldValues['身高']:=array3[I];
ADOTable1.Post;
end;可速度太慢。
在另一个帖子上该问题没得到解决。
各位高手能否提供一段SQL语句。
for i:=0 to length(array1)-1 do
begin
ADOStoredProc1.Parameters.Refresh;
adostoredproc1.parameters.ParamByName('@num').Value:=array1[I];
adostoredproc1.parameters.ParamByName('@age').Value:=array2[I];
adostoredproc1.parameters.ParamByName('@height').Value:=array3[I];
adostoredproc1.ExecProc;
end;
在此时根本不需要返回数据所以
你可以直接用SQL insert
strSQL:='insert into tableName(Fieldname1,fieldname2,fieldname3)values(''%s'',''%s'',''%s'')';for i:=0 to length(array1)-1 do
begin
strSQLInsert:=format(strSQL,[array1[I],array2[I],array3[I]));
adoconnection.execute(strSQLinsert,iRecord,[]);
end;
你的方法好像对动态数组不行把?
用parameters取代拼凑sql可以很简单地避免这一问题
for i:=0 to length(array1)-1 do
begin
TADOCommand.CommandText:='insert into tableName('数量','年龄','身高')values(array1[I],array2[I],array3[I])';
TADOCommand.execute;
end;
你的方法好像对动态数组不行把?我的那里不行了?
仔细想想
=======================================strSQL:='insert into tableName(Fieldname1,fieldname2,fieldname3)values(''%s'',''%s'',''%s'')';for i:=low(array1) to High(array1) do
begin
strSQLInsert:=format(strSQL,[array1[I],array2[I],array3[I]));
adoconnection.execute(strSQLinsert,iRecord,[]);
end;
这还是行的话,火大了!
帮助菜鸟就是了,在说不考虑问题就直接说出答案也是小孩子的毛病,忍耐一下吧
你说菜鸟我同意,但你说我没考虑,这句话欠妥吧?
对SQL我是一窍不通,可lwk_hlj(阿凯(CSDN第一铁公鸡横空出世)) 给我的代码我可以好好的看了,并且查了在线帮助。
你不帮忙,请你不要说风凉话,我没你资质好(生来就会),可我现在学不行么?(本来真不想说的)正被弄得焦头烂额的,碰到说风凉话的,真气人