一、sqldependency说明

sqlDependency 提供了一种能力:当监测的数据库中的数据发生改变的时候,sqldependency会自动触发onChange事件来通知应用程序,从而达到让系统自动更新数据(或者缓存的)的目的(后期会将其同signalr进行结合,以满足实时响应)

二、sqldependency方法调用(ASP.NET CORE 3.1)

  1. 首先,将数据库(这里使用的是SQLserver,MySql 好像叫做MySqlDependency 后期再补充)
ALTER DATABASE ShengNong SET NEW_BROKER WITH ROLLBACK IMMEDIATE;(恢复初始设置)
ALTER DATABASE ShengNong SET ENABLE_BROKER;(设置通知服务)

SELECT is_broker_enabled FROM sys.databases WHERE name = 'ShengNong ’ (可以用来查看是否已经开启通知服务)

  1. 代码实现

在startup.cs中添加一个初始化服务 services.AddHostedService();
在TEST中 添加一个Task 异步任务
调用方法

using System.Data.SqlClient;

  public async Task WatchDevice(){await Task.Run(()=> {useSqlDependency();});}

启用 SqlDependency.Start(conStr)来开启间监听

  public void useSqlDependency() {string conStr = AppSetting.DbConnectionString; // 在应用程序启动时运行的代码SqlDependency.Start(conStr);//启动监听服务,ps:只需启动一次_StockService.GetFourWayBusMessage();}

在服务关闭的时候要及时关闭监控

public Task StopAsync(CancellationToken cancellationToken){string conStr = AppSetting.DbConnectionString; // 在应用程序启动时运行的代码SqlDependency.Stop(conStr);//启动监听服务,ps:只需启动一次return Task.CompletedTask;}

通过SQL语句进行监控
注意 :这里必须使用规范的SQL语句,而且查询的字段不可以用*代替。这个SQL的含义就是要监控该表的相应字段,当该字段发生改变的时候执行onchange,其余字段发生改变的时候不发生该改变

/// <summary>/// 实时监控库存日志变化/// </summary>/// <returns></returns>public DataTable GetFourWayBusMessage(){string strSQL = "select C_Code,C_IsHaveGoods,C_CurrentRow,C_CurrentLayer,C_CurrentColumn,C_TaskNum,C_Status from [dbo].[T_Device_FourWayBus] ";SqlDataAdapter da = new SqlDataAdapter(strSQL, AppSetting.DbConnectionString);SqlDependency dep = new SqlDependency(da.SelectCommand);dep.OnChange += new OnChangeEventHandler(dep_OnFourWayBusChange);DataTable tbl = new DataTable();da.Fill(tbl);return tbl;}
   private void dep_OnFourWayBusChange(object sender, SqlNotificationEventArgs e){if (e.Type == SqlNotificationType.Change) //只有数据发生变化时,才重新获取并数据{var tbl = GetFourWayBusMessage();}}

这样一个简单的sqldependency使用就完成了

宝剑锋从磨砺出,梅花香自苦寒来。

sqldependency 的使用相关推荐

  1. SqlDependency学习笔记

    sqlDependency提供了这样一种能力:当被监测的数据库中的数据发生变化时,SqlDependency会自动触发OnChange事件来通知应用程序,从而达到让系统自动更新数据(或缓存)的目的. ...

  2. 转 .NET 2.0 SqlDependency快速上手指南

    此文以SQL Server 2005上实现为准,SQL Server 2000因为实现机制不同,请查阅相关资料. 步骤一:在SQL Server 2005上执行ALTER DATABASE <D ...

  3. wpf 轮询mysql数据库_WPF非轮询方式实时更新数据库变化SqlDependency

    public partial class Page1 : Page { private static string connStr; SqlDataReader sdr; public Page1() ...

  4. 使用SqlDependency监测数据库

    SqlDependency提供了:对监测的数据库发生变化通知前台程序的功能. 具体使用如下: public Form1()         {             InitializeCompon ...

  5. SqlDependency 与 SignalR 实现Web页面的数据实时刷新

    1. 创建一个MVC项目  SignalRDemo 2. 使用"管理NuGet程序包"添加Signalr相关的引用.  Microsoft.AspNet.SignalR  安装相关 ...

  6. The system cannot find the file specified

    在家工作,程序在家里的电脑运行时,出现一个异常,还是第一见到: Server Error in '/' Application. The system cannot find the file spe ...

  7. System.Web.Caching.Cache类 缓存 各种缓存依赖

    原文:System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.C ...

  8. mvc 下的 signalR使用小结

    2019独角兽企业重金招聘Python工程师标准>>> sirnal下有两种使用. 一种是 Persistent Connection ,另外一种是Hubs .详细请看 https: ...

  9. NET Framework 2.0中的数据访问新特性

    1异步数据访问 a)支持异步数据编程 b)SqlConnection – BeginOpen – EndOpen  c)SqlCommand – BeginExecuteNonQuery – Begi ...

  10. [Asp.net mvc]OutputCacheAttribute

    什么是Cache? 缓存在web应用中是一种以空间换去时间的技术,把频繁访问并且不经常变化的数据存储到内存中,以达到快速访问的目的.在web应用中是比较常见的优化方式. OutputCacheAttr ...

最新文章

  1. 【阿里云新品发布·周刊】第12期
  2. 蓝桥杯真题训练 2019.3题
  3. Objective-C Runtime (三):Method Swizzling(方法替换)
  4. 我的webpack路
  5. 发布 学习进度条 博客要求
  6. 下载的****.ts格式的视频在迅雷播放器中无法播放
  7. 【web素材】02-10款大气的购物商城网站模板
  8. 射频识别技术漫谈(1)——概念、分类
  9. 【kubernetes/k8s概念】CNI详解
  10. pytorch 安装教程
  11. Adobe Photoshop 2022v23.4.2.603茶末余香增强版
  12. Android持久化存储——(包含操作SQLite数据库)
  13. LWN:让内核支持符合FIPS规范的随机数!
  14. Camera摄像头模组硬件
  15. 教你实现一个简单的对象深拷贝
  16. 电脑桌面上怎么找计算机,电脑自带计算器快捷键 如何快速打开电脑上的计算器...
  17. 点评美国名校的(EE)和(CS)
  18. js visibility
  19. 90后美女的全能测试蜕变之路
  20. c#图片base64去转义字符_c#中图片与base64互相转换

热门文章

  1. AUTOCAD——图案填充命令
  2. python如何输入特殊符号_python特殊符号转义
  3. iTEXT常用属性设置
  4. Matlab遥感图像分波段,组合显示
  5. 程序员考试范围(考试大纲)
  6. 一个牛人给Java小生们的建议
  7. eviews如何处理缺失数据填补_平衡面板数据和eviews非平衡面板数据的区别
  8. 【历史上的今天】6 月 25 日:笔记本之父诞生;Windows 98 发布;通用产品代码首次商用
  9. 命令行调用SQL查询分析器
  10. 钉钉直播一键下载(网络抓包入门)