sqldependency 的使用
一、sqldependency说明
sqlDependency 提供了一种能力:当监测的数据库中的数据发生改变的时候,sqldependency会自动触发onChange事件来通知应用程序,从而达到让系统自动更新数据(或者缓存的)的目的(后期会将其同signalr进行结合,以满足实时响应)
二、sqldependency方法调用(ASP.NET CORE 3.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 ’ (可以用来查看是否已经开启通知服务)
- 代码实现
在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 的使用相关推荐
- SqlDependency学习笔记
sqlDependency提供了这样一种能力:当被监测的数据库中的数据发生变化时,SqlDependency会自动触发OnChange事件来通知应用程序,从而达到让系统自动更新数据(或缓存)的目的. ...
- 转 .NET 2.0 SqlDependency快速上手指南
此文以SQL Server 2005上实现为准,SQL Server 2000因为实现机制不同,请查阅相关资料. 步骤一:在SQL Server 2005上执行ALTER DATABASE <D ...
- wpf 轮询mysql数据库_WPF非轮询方式实时更新数据库变化SqlDependency
public partial class Page1 : Page { private static string connStr; SqlDataReader sdr; public Page1() ...
- 使用SqlDependency监测数据库
SqlDependency提供了:对监测的数据库发生变化通知前台程序的功能. 具体使用如下: public Form1() { InitializeCompon ...
- SqlDependency 与 SignalR 实现Web页面的数据实时刷新
1. 创建一个MVC项目 SignalRDemo 2. 使用"管理NuGet程序包"添加Signalr相关的引用. Microsoft.AspNet.SignalR 安装相关 ...
- The system cannot find the file specified
在家工作,程序在家里的电脑运行时,出现一个异常,还是第一见到: Server Error in '/' Application. The system cannot find the file spe ...
- System.Web.Caching.Cache类 缓存 各种缓存依赖
原文:System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.C ...
- mvc 下的 signalR使用小结
2019独角兽企业重金招聘Python工程师标准>>> sirnal下有两种使用. 一种是 Persistent Connection ,另外一种是Hubs .详细请看 https: ...
- NET Framework 2.0中的数据访问新特性
1异步数据访问 a)支持异步数据编程 b)SqlConnection – BeginOpen – EndOpen c)SqlCommand – BeginExecuteNonQuery – Begi ...
- [Asp.net mvc]OutputCacheAttribute
什么是Cache? 缓存在web应用中是一种以空间换去时间的技术,把频繁访问并且不经常变化的数据存储到内存中,以达到快速访问的目的.在web应用中是比较常见的优化方式. OutputCacheAttr ...
最新文章
- 【阿里云新品发布·周刊】第12期
- 蓝桥杯真题训练 2019.3题
- Objective-C Runtime (三):Method Swizzling(方法替换)
- 我的webpack路
- 发布 学习进度条 博客要求
- 下载的****.ts格式的视频在迅雷播放器中无法播放
- 【web素材】02-10款大气的购物商城网站模板
- 射频识别技术漫谈(1)——概念、分类
- 【kubernetes/k8s概念】CNI详解
- pytorch 安装教程
- Adobe Photoshop 2022v23.4.2.603茶末余香增强版
- Android持久化存储——(包含操作SQLite数据库)
- LWN:让内核支持符合FIPS规范的随机数!
- Camera摄像头模组硬件
- 教你实现一个简单的对象深拷贝
- 电脑桌面上怎么找计算机,电脑自带计算器快捷键 如何快速打开电脑上的计算器...
- 点评美国名校的(EE)和(CS)
- js visibility
- 90后美女的全能测试蜕变之路
- c#图片base64去转义字符_c#中图片与base64互相转换