Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改数据库数据时更新用户界面_C# - Fatal编程技术网

C# 更改数据库数据时更新用户界面

C# 更改数据库数据时更新用户界面,c#,C#,有没有可能在表单上的控件(例如:datagrid)在数据插入数据库后自动更新 例子: 一个人的电脑上有一个仪表盘,用来监控高水平的库存明细 人员B、C和D分别向库存数据库添加了一个新项目 人员B、C和D的操作应立即反映在人员A(实时)上,无需计时器、间隔或手动刷新 是否可以通过C#WinForms实现这一点?我已经研究并尝试了一些关于信号员的事情,但我认为这不是我想要/需要的 谢谢。假设您的数据库是MSSQL 我很抱歉地说,如果不通过轮询请求来访问SQL DB,就无法实现您想要的。你可以像@Cy

有没有可能在表单上的控件(例如:datagrid)在数据插入数据库后自动更新

例子:
  • 一个人的电脑上有一个仪表盘,用来监控高水平的库存明细
  • 人员B、C和D分别向库存数据库添加了一个新项目
  • 人员B、C和D的操作应立即反映在人员A(实时)上,无需计时器、间隔或手动刷新
  • 是否可以通过C#WinForms实现这一点?我已经研究并尝试了一些关于信号员的事情,但我认为这不是我想要/需要的


    谢谢。

    假设您的数据库是MSSQL

    我很抱歉地说,如果不通过轮询请求来访问SQL DB,就无法实现您想要的。你可以像@Cyber Progs在评论中提到的那样尝试,但我仍然认为这不会有多大好处。但是,嘿,尝试没有坏处:)所以去尝试吧

    SQL更像是一种你能得到你想要的东西的方式。而不是相反。因此,除非并且直到您通过使用
    计时器
    手动刷新
    向DB发出轮询请求以获取所需任何表的详细信息,否则SQL本身不会将更新传递给您的程序

    由于您已经尝试并离开了
    信号器
    ,我建议使用
    计时器
    +
    多线程
    。除此之外,我认为没有一种方法更适合你所需要达到的目标

    另外一个更方便的选择是使用
    FileSystemWatcher
    ,它位于
    System.IO.FileSystemWatcher
    中。 您可以做的是在您想要得到通知的表上创建一个
    SQL触发器

    每当运行
    插入
    更新
    删除
    查询时,此触发器最终只会更改(修改)本地/网络文件

    文件本身的内容中没有任何内容,只是每次运行
    触发器时,文件的修改日期都会改变


    现在,您可以使用
    FileSystemWatcher
    在应用程序中编写代码,以监视此(本地/网络)文件。如果修改了,只需快速轮询数据库并获取最新数据。

    我建议使用SignalR和SQL事件侦听器

    步骤1: 您可以用c#定义实体模型(有一些工具可以进行反向工程,这可以节省您自己编写上下文的时间)

    步骤2: 配置信号集线器。在一个对象中存储所有用户连接,有一个基本的教程如何做到这一点

    步骤3: 然后,您可以覆盖savechangessync方法,在内部执行一些检查以确定发生了什么变化,如果您感兴趣的是该模型,那么您可以触发对signarhub方法的更改,并将所有更改推送到客户端JS

    一旦您在JS中收到它,就可以对datagrid执行更改。

    看看这个,您是否尝试过SqlDependency