如何从服务器数据库更新客户端数据库?

时间:2017-02-12 10:18:04

标签: delphi

嗨,伙计们!

我是编程新手。我需要你的帮助!

我正在使用Delphi-xe8。应用程序 - >多设备应用程序

我有2个应用程序让我们调用服务器和客户端。

ClientandServer

ClientDBandServerDB

当客户点击“连接”时,我需要' ,客户端数据库应该从服务器数据库更新!

注意:我在双方SQLite中使用。

我需要最简单的方法。

Q&如何使用App tethering从服务器数据库更新客户端数据库?

1 个答案:

答案 0 :(得分:3)

我在这里回答你之前的问题:How to Get Images From Server using App Tethering向您展示了如何使用app tethering将服务器中的TClientDataSet中的数据传输到客户端中的数据。

这种传输方法依赖于TClientDataSet将其数据保存到服务器端的流并使用其SaveToStreamLoadFromStream从客户端的流加载它的能力。在这个q中,虽然你还没有说明你的2个rQuery组件是什么,但你显然使用的是FireDAC,它的FDQuery,FDMemTable等具有SaveToStreamLoadFromStream方法,这些方法在类似的,虚拟的相同的方式(从用户的pov)到TClientDataSet。因此,要从服务器端“更新”您的客户端数据集,您可以使用您在我对其他q的答案中显示的类似方式使用您的数据集组件。

为了保存其他读者访问另一个q,FireDAC代码是

服务器:

procedure TServerApp.DataSetToStream;
var
  Stream : TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  FDQuery1.SaveToStream(Stream);
  Stream.Position := 0;
  TetheringAppProfile1.Resources.FindByName('BioLife').Value := Stream;
end;

客户端

procedure TCliemtApp.TetheringAppProfile1Resources0ResourceReceived(const Sender:
    TObject; const AResource: TRemoteResource);
begin
  AResource.Value.AsStream.Position := 0;
  FDMemTable1.LoadFromStream(AResource.Value.AsStream);
end;