【问题标题】:How does a client refresh the data on a server客户端如何刷新服务器上的数据
【发布时间】:2012-07-11 18:51:13
【问题描述】:

我使用 datasnap 开发了一个客户端/服务器应用程序。每当客户端更新表时,我需要知道如何刷新服务器上的数据。原因是当我在客户端运行查询时,将记录插入表后,新记录不会反映在查询中。

我使用的是 firebird db,带有 datasnap,在 Delphi XE2 中开发

【问题讨论】:

  • 您的refreshTable 过程需要TSQLDataSet,但您将string 表名作为参数传递。从stringTSQLDataSet 的转换对您有什么影响?
  • 老实说,我什至不知道如何将字符串转换为 TSQLDataSet。
  • 那是因为你不能,这就是我质疑它的原因。 :-) 我认为您需要澄清您的问题,以便更具体地说明“服务器”和“客户端”的含义——您是在谈论普通的客户端/服务器应用程序、Web 服务 (SOAP) 还是完全其他的东西?此外,“访问冲突错误”没有任何有关错误的详细信息(例如包含任何地址的确切错误消息)就像打电话给您的医生并说“我感觉不舒服。怎么了?”没有其他细节,期待诊断和治愈。如果您不向我们提供相关工具,我们将无法为您提供帮助。
  • 为什么需要客户端告诉服务器刷新服务器刚刚更新的表? (表在服务器上,服务器必须进行更新 - 它应该自动刷新表。)恐怕你的问题非常不清楚。我不知道你在这里实际问的是什么。
  • 当我插入或更新表时,它不会在客户端上反映这些更新。所以我认为这是因为服务器上的表没有刷新。因此,我想编写一个方法来刷新我刚刚更新的特定表。

标签: delphi delphi-xe2 firebird datasnap


【解决方案1】:

在客户端窗体上放一个TTimer控件并指定刷新时间频率,根据需要更改间隔值,例如:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
table1.refresh;
end;

【讨论】:

    【解决方案2】:

    我会说,它还取决于您用于写入 DB 的工具。但是,通常,使用 Firebird,您将激活一个事务,一旦更新完成,您将提交您的更改。在提交之前,无论刷新多少次,其他客户端都无法看到新的更改。一旦提交,我的理解是,您只需根据您的标准调用 SELECT 命令来刷新数据。

    【讨论】:

      猜你喜欢
      • 2013-12-05
      • 2016-05-17
      • 2016-08-05
      • 2018-10-27
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      相关资源
      最近更新 更多