ExeSQL是直接執行SQL語句,而與CachedUpdates沒有任何關係。
CachedUpdates是指對TTable或TQuery中的已修改的資料進行緩衝,直到調用
ApplyUpdates.
ApplyUpdates是對TQuery或TTable中已修改,但為提交的資料進行提交,
並且只有在TQuery或TTable對象的CachedUpdates=True且Active=True,
State=dsbrowse時才能調用。
TQuery的CachedUpdates必須陪合TUpdateSQL控制項才能使用。
例如:
Query1.SQL.Text:='select field1,field2 from table1';
Query1.CachedUpdates:=True;
Query1.UpdateObject:=UpdateSQL1;
UpdateSQL1.InsertSQL:='insert table1(field1,field2) values (:field1,:field2)';
UpdateSQL1.deleteSQL:='delete from table1 where field1=:field1,field2=:field2';
UpdateSQL1.ModifySQL:='update table1 set field1=:field1,field2=:field2 where field1=:old_field1 and field2=:old_field2;
Query1.Open;
Query1.First;
while not Query1.Eof do begin
Query1.Edit;
Query1.FieldByName('field1').AsString:='123';
Query1.Post; //此時資料並未提交到後台。
Query1.Next;
end;
Query1.Database.StartTransaction
try
Query1.ApplyUpdates;
Query1.Database.Commit;
except
Query1.Database.Rollbback;
raise;
end;
Query1.CommitUpdates;