当前位置: 首页 > 面试题库 >

当某些用户编辑数据时如何在其他用户界面上刷新数据

毋修为
2023-03-14
问题内容

在VB.net应用程序中,我有一个SQL接口,users在SQL数据库中有一个表供此应用程序的用户使用,当用户单击按钮时,所有这些用户现在都看到相同的数据,更改保存在sql中并刷新了数据对于该用户,但是我希望在某些用户单击该按钮后立即为所有用户刷新数据。

我有想法

  1. 每秒刷新一次数据,这不好
  2. 我需要进一步澄清vb.net的SQL触发器!

什么是最有效的方法?

我想没有计时器的工作!

谢谢


问题答案:

~~~~

SQL Server通知服务

SQL提供通知的订阅,这些通知提供了与您的需求相关的机制。

http://msdn.microsoft.com/zh-
CN/library/ms172483(v=sql.90).aspx

注意 :已删除,因为您稍后提供了使用SQL Server 2008 R2的信息

与老把戏 System.IO.FileSystemWatcher

另一种方法是在您的表上创建一个SQL触发器,以执行简单的文件时间戳更改。文件本身的大小为0个字节,因此我们不对其进行任何写入操作,因此可以快速进行操作。

然后,所有客户端都会监视此文件进行修改,并且当发生更改时,监视程序会触发一个更改事件,在该事件中,您的客户端可以简单地重新加载其数据。

CREATE TRIGGER DataChanged
ON YourTable
FOR INSERT, UPDATE, DELETE
AS
    EXEC master..xsp_UpdateSignalFile 'YourTable.DataChanged'

此CLR存储过程的思想是尽可能快地保持其可伸缩性。如果数据服务器负载很重,则甚至可以通过使用外部进程更新文件来对其进行优化

您可以在此MSDN文章中找到与Web表单实际上相关的CLR存储过程的代码,但是除了此CLR过程之外,您不需要其他任何东西。也许是整个系统如何工作的解释。

然后,您的客户端将System.IO.FileSystemWatcher用来监视某个网络位置(此过程将更新文件)上的文件更改,并在更改发生时更新其数据。

简单而优雅的技巧
,不使用轮询或对数据服务器的不必要请求。当然,您可以在多个表上具有触发器,每个触发器都会更改一个不同的文件,并根据您在客户端上显示的表单,然后在表单的生命周期内监视该特定文件。当用户将上下文更改为其他数据时,客户端应用程序将释放文件监视程序(并为其他文件创建新的监视程序)。



 类似资料:
  • 我想注册一个应用程序在Azure有能力访问其他Azure用户的监控数据。 我知道你可以注册一个新的应用程序...https://docs.microsoft.com/en-us/Azure/active-directory/develope/quickstart-register-app

  • 有一个对象,其中用户以数组的形式存在,如何使用特定id更新用户,而不发送整个用户数组。 当同时更新不同用户的数据时,发送的数据被覆盖,但必须不被覆盖

  • 记住,使用 tenant2 可以在一些服务调用中更新自己的 TenantId,我们需要在服务器端对它进行安全检测。 与此类似,即使默认情况下,不能看到其他租户的用户,但实际上可以检索和更新他们。 又到了黑客时间。 打开 Chrome 的控制台,并输入: new MultiTenancy.Administration.UserDialog().loadByIdAndOpenDialog(1) 什么?

  • 我最近创建了一个非常基本的站点,用户可以在其中登录,然后访问一个他们可以编辑的表。我希望用户只能编辑自己的详细信息,而不能编辑其他人的详细信息,我不知道应该向代码中添加什么才能做到这一点。下面是编辑页面看起来像atm(我知道这样显示密码不是很安全,这只是一个例子) 更新:我不知道我应该添加到删除页面的值,所以它只删除登录用户的详细信息,而不删除任何人的。目前它没有删除任何细节。这是我的注册页面 这

  • 我正在构建一个使用Microsoft Graph的本机应用程序。 我正在使用OAuth2授权工作流获取授权代码:https://login.microsoftonline.com/common/OAuth2/authorize?resource=https://graph.microsoft.com&prompt=admin_contority

  • 我目前正在为一个学校项目创建一个API,一切都很好。我的设置是:节点v10、Postgres、Koa等等... 我目前有以下内容: