for i := 0 to 800 do begin if i=0 then s := #13#10' insert into PlanetData(VehicleSN,SystemTime,IsNavigation,PlanetTime,' +'Longitude,Latitude,Speed,Direction,EnterArea,LeaveArea,AreaName,SmallLongitude,BigLongitude,' +'SmallLatitude,BigLatitude,AreaOverSpeed,OverSpeed,Alert,CutElectricity,LowerVoltage,' +'ConnectedElectricity,LoadedOn,PowerOn)' else s := #13#10' insert into PlanetData(VehicleSN,SystemTime,IsNavigation,PlanetTime,' +'Longitude,Latitude,Speed,Direction,EnterArea,LeaveArea,AreaName,SmallLongitude,BigLongitude,' +'SmallLatitude,BigLatitude,AreaOverSpeed,OverSpeed,Alert,CutElectricity,LowerVoltage,' +'ConnectedElectricity,LoadedOn,PowerOn)'; ms.Write(s[1], length(s)); s := ' values('; ms.Write(s[1], length(s)); s := '1'; ms.Write(s[1], length(s)); s := ','; ms.Write(s[1], length(s)); s := QuotedStr(FormatDateTime('YYYY-MM-DD HH:NN:ss.zzz', now - i)); ms.Write(s[1], length(s)); s := ','; ms.Write(s[1], length(s)); s := '1'; ms.Write(s[1], length(s)); s := ','; ms.Write(s[1], length(s)); s := QuotedStr(FormatDateTime('YYYY-MM-DD HH:NN:ss.zzz', now)); ms.Write(s[1], length(s)); s := ','; ms.Write(s[1], length(s)); s:='123.11,145.12,10,40,1,1,''jkjkj'',11.45,178.12,178.12,178.12,' ; ms.Write(s[1], length(s)); for j := 1 to 7 do begin s := '1'; ms.Write(s[1], length(s)); s := ','; ms.Write(s[1], length(s)); end; s := '1'; ms.Write(s[1], length(s)); s := ')'; ms.Write(s[1], length(s)); end; setlength(s, ms.size); ms.Position := 0; ms.Read(s[1], ms.Size); try ADOCMain.Execute(s); except // end;这样一次可以插801条数据效率很高 ,但如果中间有一条数据失败后面的就插不了,大家看看有什么办法
開始一個事務,把要做的事情做完後.
最後回來Commit
mConn, mRecordSet: Variant;
begin
mConn := ComObj.CreateOleObject('ADODB.Connection');
mConn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=demo;Data Source=.';
mRecordSet := CreateOleObject('ADODB.RecordSet');
mConn.Open();
mRecordSet.Open('select * from [Order] where 0=1', mConn, 1, 3); mRecordSet.AddNew();
mRecordSet.Fields('date') := '2005-1-1';
mRecordSet.Fields('customer') := 'hydon lee'; mRecordSet.Update();
mConn.Close();
end;
begin
if i=0 then
s := #13#10' insert into PlanetData(VehicleSN,SystemTime,IsNavigation,PlanetTime,'
+'Longitude,Latitude,Speed,Direction,EnterArea,LeaveArea,AreaName,SmallLongitude,BigLongitude,'
+'SmallLatitude,BigLatitude,AreaOverSpeed,OverSpeed,Alert,CutElectricity,LowerVoltage,'
+'ConnectedElectricity,LoadedOn,PowerOn)'
else
s := #13#10' insert into PlanetData(VehicleSN,SystemTime,IsNavigation,PlanetTime,'
+'Longitude,Latitude,Speed,Direction,EnterArea,LeaveArea,AreaName,SmallLongitude,BigLongitude,'
+'SmallLatitude,BigLatitude,AreaOverSpeed,OverSpeed,Alert,CutElectricity,LowerVoltage,'
+'ConnectedElectricity,LoadedOn,PowerOn)';
ms.Write(s[1], length(s)); s := ' values(';
ms.Write(s[1], length(s)); s := '1';
ms.Write(s[1], length(s));
s := ',';
ms.Write(s[1], length(s)); s := QuotedStr(FormatDateTime('YYYY-MM-DD HH:NN:ss.zzz', now - i));
ms.Write(s[1], length(s));
s := ',';
ms.Write(s[1], length(s)); s := '1';
ms.Write(s[1], length(s));
s := ',';
ms.Write(s[1], length(s)); s := QuotedStr(FormatDateTime('YYYY-MM-DD HH:NN:ss.zzz', now));
ms.Write(s[1], length(s));
s := ',';
ms.Write(s[1], length(s));
s:='123.11,145.12,10,40,1,1,''jkjkj'',11.45,178.12,178.12,178.12,' ;
ms.Write(s[1], length(s)); for j := 1 to 7 do
begin
s := '1';
ms.Write(s[1], length(s));
s := ',';
ms.Write(s[1], length(s));
end; s := '1';
ms.Write(s[1], length(s)); s := ')';
ms.Write(s[1], length(s));
end; setlength(s, ms.size);
ms.Position := 0; ms.Read(s[1], ms.Size);
try
ADOCMain.Execute(s);
except
//
end;这样一次可以插801条数据效率很高 ,但如果中间有一条数据失败后面的就插不了,大家看看有什么办法
該屬性可控制你插入完數據後最后UpdateBatch更新到后臺數據庫
不知這樣可否!
UpdateBatch
CommitTrans