一旦在数据库中插入了数据,是否有可能自动更新表单上的控件(例如:datagrid)?
例:

人员A在其计​​算机上有一个仪表板,用于监视高级库存明细。
人员B,C和D分别向库存数据库添加了新项目。
B,C和D人的动作应立即反映A人(实时),而没有计时器,间隔或手动刷新。

是否可以通过C#WinForms实现呢?我已经研究和尝试了有关SignalR的东西,但我不认为这是我想要/需要的东西。
谢谢。

最佳答案

假设您的数据库是MSSQL。

我很抱歉地说,但是您无法在不通过轮询请求访问SQL DB的情况下实现所需的功能。您可以尝试使用@aaCyber​​ Progs在评论中提到的SQLDependency,但我仍然认为这样做不会有什么好处。但是,嘿,尝试没有害处:)所以就去吧。

SQL可以满足您的要求。并非相反。因此,除非且直到您通过使用timermanual refresh向数据库发出轮询请求以获取所需表的详细信息,否则SQL本身不会将更新传递给程序。

当您尝试离开SignalR时,我建议使用Timer + Multithreading。除此之外,我没有找到一种更适合您所需要实现的方法。

否则,更方便的选择是使用驻留在FileSystemWatcher中的System.IO.FileSystemWatcher
您可以做的是在要获取通知的表上创建一个SQL Trigger

每当运行INSERTUPDATEDELETE查询时,此触发器最终将什么也不做,只能更改(修改)本地/网络文件。

该文件本身将没有内容,只是其修改日期会在每次Trigger运行时更改。

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

10-02 02:57
查看更多