c# - 向多个用户显示由另一个用户插入的数据更新

标签 c# .net sql sql-server sql-server-2005

我需要在用户输入数据库时​​立即向用户显示更新的数据,即在线查看。

我正在使用 sql server 并构建一个 c# .net winform 应用程序。 该应用程序将由 3 个用户 U1、U2、U3 在 LAN 上使用。

用户将使用应用程序将数据输入到 ITEMS 表中,当 U2 单击插入按钮时,他应该在 GridView 或其他底部的同一表单上查看更新的数据,而且 U1、U3 也会自动在应用程序中查看其 PC 上更新的表格。

我该怎么做?

U1、U2、U3 已打开该应用程序。

U2 已导航至 INSERT items 表单。

U1,U3在查看项目表单上。

我希望当 U2 插入数据时,U1、U3 应用程序上的 GridView 会自动更新,并且他们可以在 ITEMS 表中看到 U2 插入的新数据。他们甚至不需要刷新或重新打开查看项目表单。

必须在 ITEMS 表上使用触发器。有什么办法可以避免这里触发吗?

最佳答案

您不需要触发器(至少不需要用于所描述的目的)。

常见的做法是实现按需刷新功能(通常是 F5)。

让电脑或屏幕始终保持最新的数据库有点荒谬。考虑网络流量。考虑一下,当 U1 或 U2 接听电话、去吃午饭或休息时,没有人在场看屏幕。按需刷新的能力比较合理。

此外,如果您必须实现这样的功能,请向表中添加 Last-Updated-TimeStamp 或 DateTime 列,并且仅检索自上次检索以来已更新的行。

回复评论

谢谢。

  1. 在每个表上,包含一个 TimestampDatetime 列,名称类似于 UpdatedDateTime。设置默认值 GETDATE()

  2. 每当您更新行时,请更新此列。 请注意,您只能有意义地让一个数据窗口处于焦点,即。在前面,所有其他 window 都失去焦点,无法看到。因此,将刷新或自动刷新编码到每个窗口中是没有意义的;仅那些真正需要自动刷新的窗口。

  3. 在客户端或 .NET 端,对于每个需要刷新的窗口,为 Function-5 按钮编写代码。每当激活 F5 时,刷新窗口。这意味着:

    • 填充该窗口的列表对象(包含逻辑数据行):
      SELECT column_list
          FROM table t1
          JOIN join_table t2 ...
          WHERE t1.UpdatedDateTime > @SavedDateTime
          OR    t2.UpdatedDateTime > @SavedDateTime
          ... other_conditions
    • SET @SavedDateTime = GETDATE()
    • 绘制 window 这将避免在网络上移动大量不变的数据;并仅将已更改的行移动到窗口中。智能刷新。
  4. 测试一下。确保手动刷新按预期工作。在另一台 PC 上更新数据,在此 PC 上按 F5,并验证窗口中的数据是否发生变化以反射(reflect)更新;并且当数据不更改时,窗口现在会重新绘制。

  5. 现在进行自动刷新。编写一个无限循环(总是坏新),等待 30 秒,然后执行 F5 按钮代码。现在检查是否按预期工作。

  6. 如果级别很高的人希望更频繁地刷新窗口(超过 30 秒),请将等待参数更改为 15 秒。如果当某个非常资深的人希望更频繁地刷新窗口(超过 15 秒)时,请将该等待参数更改为 10 秒。等等。一开始就不要将等待时间设置为 1 秒、2 秒或 5 秒。并允许每台PC设置自己的等待时间(大老板5秒,小老板30秒)。

  7. 当老板提示网络速度慢时,向他们展示当没有人坐在电脑前阅读窗口时充斥网络的数据包,并建议他们关闭自动刷新。手动刷新仍然可供实际坐在窗前、手指没有折断的任何人使用。

关于c# - 向多个用户显示由另一个用户插入的数据更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5216899/

相关文章:

c# - 测试资源管理器 > 全部运行 : System. 异常:找不到主应用程序程序集

c# - xaml 没有看到我的 ivalueconverter

sql - 如何在 HIVE 中编写以下查询

c# - linq orderby 使用属性名称字符串

c# - 如何在 C# (.NET) 中使用 POST 变量登录 HTML 表单?

.net - 这段代码是线程安全的吗?

php - JOIN 中的 SQL JOIN

mysql - SQL链接5个表

c# - 在 winform 中构建提醒

c# - 无法使用 JSON 数据在 AJAX 调用中绑定(bind) jQuery DataTable