Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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# 在表插入时显示windows气泡通知_C#_Sql Server_Windows - Fatal编程技术网

C# 在表插入时显示windows气泡通知

C# 在表插入时显示windows气泡通知,c#,sql-server,windows,C#,Sql Server,Windows,我正在用C#开发一个windows应用程序。我想在将新行插入特定表时显示气泡通知。该应用程序将安装在许多计算机上,并通过局域网共享一个公共数据库。目前,我正在使用轮询实现这一点。也就是说,应用程序将每秒查询数据库表以检查是否插入了新行。请告诉我这是正确的方法还是有更好的方法?我知道使用触发器可以在SQL server中执行表插入的查询,但是否可以从将新行插入表的SQL server向特定应用程序发送消息?请提供帮助我认为您可以通过结合使用SQL CLR触发器和Win32 API函数来实现这一点。

我正在用C#开发一个windows应用程序。我想在将新行插入特定表时显示气泡通知。该应用程序将安装在许多计算机上,并通过局域网共享一个公共数据库。目前,我正在使用轮询实现这一点。也就是说,应用程序将每秒查询数据库表以检查是否插入了新行。请告诉我这是正确的方法还是有更好的方法?我知道使用触发器可以在SQL server中执行表插入的查询,但是否可以从将新行插入表的SQL server向特定应用程序发送消息?请提供帮助

我认为您可以通过结合使用SQL CLR触发器和Win32 API函数来实现这一点。使用CLR触发器将有助于避免轮询

在写入CLR触发器时

显示的示例代码正在记录到某个审计表中。交换该部分以调用Shell\u NotifyIcon Win32 API函数。 以显示引出序号通知


实际的示例代码是(搜索NoTimeCigig.zip),用C++编写,但是一旦你完成了DLL导入并使用pPoNKE,就应该能够修改它。有关这方面的更多信息,请参见。

非常开放的问题。。。有很多方法!您是否有一个中央服务,或者是否所有的客户端都会在每个请求中访问数据库?每秒轮询一个数据库可能会影响性能。就我个人而言,我会考虑使用一个windows/web服务来处理通知并将其转发给所有连接的应用程序。因此,当应用程序的一个实例插入一行时,它会通知服务,然后服务会向所有其他连接(侦听)的应用程序发送通知。祝你好运@谢谢你。我没有中央服务。所有客户端都将轮询数据库。请告诉我最好的方法。我怎样才能创建一个中央服务?@musefan谢谢。请让我知道如何创建处理通知的windows服务。@user1690835:抱歉,我无法为您提供指导。你需要研究一下这个概念,看看你自己能实现什么。也许看看WCF。。就像我说的,祝你好运,这不容易!我是否正确理解了这一点:此CLR触发器将通知应用程序的任何实例插入?或者它只会通知启动插入的实例吗?我还没有测试它,但我认为它只会通知启动插入的实例。为了广播它,我想知道您是否可以在CLR函数中引发一个事件,客户端可以订阅该事件,并在该事件中执行气球通知。然后,也许您应该扩展您的答案。OP使用轮询,这很可能意味着他们想要检测表中的任何新插入。1是检测新插入件。2向所有客户端广播这些插入。3使用任务栏气球通知广播单个消息。OP使用轮询来检测插入,而不是广播消息。CLR触发器将解#1,Win32 API代码将解#3。我让OP来实现#2。他们正在轮询表以检测插入。他们使用该方法,以便应用程序的任何实例都可以看到任何插入。他们正在寻找投票方法的替代方法。如果你想回答这个问题,我希望你的建议是另一种选择,但你自己说可能不是这样。这就是为什么我建议你用任何必要的额外信息来扩展你的答案,使你的方法成为OP实现的实际替代品。(尽管如此,我意识到这可能已经是一个很好的起点)