最近公司做个系统,用ADOQUERY往ACCESS中保存数据,代码如下:
for row:=1 to SheetGrid.RowCount-1 do
begin
tmpADO.Close;
tmpADO.SQL.Clear;
tmpADO.sql.add('insert into Contact(ContactId,ContactName,ContactMobile,HeadShip,Sex,Birthday,CoFax,CoAddr,'+
'HomeTel,HomeAddr,Email,CoDept,CoTel,Description,Province,City,Trade,CoName) values (:ContactId,:ContactName,:ContactMobile,:HeadShip,:Sex,:Birthday,:CoFax,:CoAddr,:HomeTel,:HomeAddr,:Email,:CoDept,:CoTel,:Description,:Province,:City,:Trade,:CoName)');
/////////////////////////////////////////////////
tmpADO.Parameters.ParamByName('ContactId').Value :=cid;
tmpADO.Parameters.ParamByName('ContactName').Value := name;
tmpADO.Parameters.ParamByName('ContactMobile').Value :=mobile;
tmpADO.Parameters.ParamByName('HeadShip').Value:=pos;
tmpADO.Parameters.ParamByName('Sex').Value :=sex;
tmpADO.Parameters.ParamByName('Birthday').Value := birthday;
tmpADO.Parameters.ParamByName('CoFax').Value :=fax;
tmpADO.Parameters.ParamByName('CoAddr').Value := coAddr;
tmpADO.Parameters.ParamByName('HomeTel').Value :=hometel;
tmpADO.Parameters.ParamByName('HomeAddr').Value := homeAddr;
tmpADO.Parameters.ParamByName('Email').Value :=email;
tmpADO.Parameters.ParamByName('CoDept').Value :=depart;
tmpADO.Parameters.ParamByName('CoTel').Value :=cotel;
tmpADO.Parameters.ParamByName('Description').Value :=desc;
tmpADO.Parameters.ParamByName('Province').Value :=province;
tmpADO.Parameters.ParamByName('City').Value :=city;
tmpADO.Parameters.ParamByName('Trade').Value := trade;
tmpADO.Parameters.ParamByName('CoName').Value :=coname;
tmpADO.Execsql;
end;
数据库表的字段可能比较多,有十几个,采用的是逐条插入。速度太慢了,1秒钟就三十多条,想请问各位大虾们,这插入速度正不正常?有没有比较快的操作方法?
for row:=1 to SheetGrid.RowCount-1 do
begin
tmpADO.Close;
tmpADO.SQL.Clear;
tmpADO.sql.add('insert into Contact(ContactId,ContactName,ContactMobile,HeadShip,Sex,Birthday,CoFax,CoAddr,'+
'HomeTel,HomeAddr,Email,CoDept,CoTel,Description,Province,City,Trade,CoName) values (:ContactId,:ContactName,:ContactMobile,:HeadShip,:Sex,:Birthday,:CoFax,:CoAddr,:HomeTel,:HomeAddr,:Email,:CoDept,:CoTel,:Description,:Province,:City,:Trade,:CoName)');
/////////////////////////////////////////////////
tmpADO.Parameters.ParamByName('ContactId').Value :=cid;
tmpADO.Parameters.ParamByName('ContactName').Value := name;
tmpADO.Parameters.ParamByName('ContactMobile').Value :=mobile;
tmpADO.Parameters.ParamByName('HeadShip').Value:=pos;
tmpADO.Parameters.ParamByName('Sex').Value :=sex;
tmpADO.Parameters.ParamByName('Birthday').Value := birthday;
tmpADO.Parameters.ParamByName('CoFax').Value :=fax;
tmpADO.Parameters.ParamByName('CoAddr').Value := coAddr;
tmpADO.Parameters.ParamByName('HomeTel').Value :=hometel;
tmpADO.Parameters.ParamByName('HomeAddr').Value := homeAddr;
tmpADO.Parameters.ParamByName('Email').Value :=email;
tmpADO.Parameters.ParamByName('CoDept').Value :=depart;
tmpADO.Parameters.ParamByName('CoTel').Value :=cotel;
tmpADO.Parameters.ParamByName('Description').Value :=desc;
tmpADO.Parameters.ParamByName('Province').Value :=province;
tmpADO.Parameters.ParamByName('City').Value :=city;
tmpADO.Parameters.ParamByName('Trade').Value := trade;
tmpADO.Parameters.ParamByName('CoName').Value :=coname;
tmpADO.Execsql;
end;
数据库表的字段可能比较多,有十几个,采用的是逐条插入。速度太慢了,1秒钟就三十多条,想请问各位大虾们,这插入速度正不正常?有没有比较快的操作方法?
select value1, value2
union
select value3, value4
union
select value5, value6
var
sqlstr:string;begin
sqlstr := 'insert into Contact'+
'(ContactId,ContactName,ContactMobile,HeadShip,Sex,Birthday,'+
'CoFax,CoAddr,HomeTel,HomeAddr,Email,CoDept,CoTel,Description,'+
'Province,City,Trade,CoName) values(:ContactId,:ContactName,'+
':ContactMobile,:HeadShip,:Sex,:Birthday,:CoFax,:CoAddr,:HomeTel,'+
':HomeAddr,:Email,:CoDept,:CoTel,:Description,:Province,:City,:Trade,:CoName)';
tmpADO.Close;
tmpADO.SQL.Clear;
tmpADO.sql.add(sqlstr);
for row:=1 to SheetGrid.RowCount-1 do
begin
tmpADO.Parameters.Items[0].Value :=cid;
tmpADO.Parameters.Items[1].Value := name;
tmpADO.Parameters.Items[2].Value :=mobile;
....
tmpADO.Execsql;
end;
end;