如何应用更新 - 使用dbnavigator或代码?

时间:2014-02-03 07:10:31

标签: sqlite delphi delphi-xe4

我在Datasnap Client - Server场景中使用SQLite数据库。为了避免使用dbnavigator将更新应用于客户端集,我想知道是否有替代方案。这是一个很好的选择吗? :

procedure TForm2.ClientDataSet1AfterPost(DataSet: TDataSet);
begin
ClientDataSet1.ApplyUpdates(0);
end;

我的理由是,在插入或更新记录后发生帖子后,这将是插入代码以避免使用dbnavigator用于此目的的好地方。这个推理好吗?另一种选择?或者,如果Datasnap使用dbnavigator,它会更好吗?

2 个答案:

答案 0 :(得分:2)

这是一种完全有效的方法,可以立即将任何更改应用于在AfterPost事件中调用ApplyUpdates的数据库。但是你应该为AfterDelete做同样的事情。

顺便说一句,您不必使用DBNavigator来调用ApplyUpdates。程序中可能有适合的点(例如FormClose)。

答案 1 :(得分:1)

如前所述,在发布和删除后调用TClientDataset.ApplyUpdates确实是完全有效的,但请记住,通过这样做,您将增加客户端和服务器之间的往返。在某些情况下,这可能会产生性能问题。

特别是我更喜欢让用户在表单中执行许多操作,并在一次往返中应用它们。为了做到这一点,我通常有一个提交或保存按钮连接到<clientDataset>.State in [dsEdit, dsInsert] or <clientDataset>.ChangeCount>0时启用的特定操作。

这只是一个偏好问题,但在我看来,这对用户来说是一个很好的比喻,并让他/她有机会构建一批操作(插入,删除和更新)以保存在单一时刻。