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;
本文详细介绍了TQuery的CachedUpdates特性,强调了它必须与TUpdateSQL控件配合使用才能生效。通过示例代码展示了如何设置InsertSQL、DeleteSQL和ModifySQL,以及在数据修改后的应用更新和事务处理过程,帮助理解数据提交的流程。
2145

被折叠的 条评论
为什么被折叠?



