数据库主动式通知编程

C++扩展存储过程编程--使用UDP发送数据库的更新通知     关键字:VC++, SQL Server,UDP,扩展存储过程        作者:邓杨均     EMail: dyj057@gmail.com    源代码: http://www.cnblogs.com/Files/dyj057/NetKingAlarmXP.rar        当数据库更新的时候,如果插入,删除,修改了数据记录,我们的应用程序需要知道这    些记录,就需要使用触 阅读详情

数据库主动式通知编程

 

概述

       当数据库更新的时候,如插入,删除,修改了数据记录,我们的应用程序需要知道些变更,一般情况下我们会采用轮询的方式.对数据库不间断性地查询,这种方式即不能保证实时性,又非常损耗服务的性能.那么是否有主动触发的机制,主动通知应用程序哪些记录做了更新呢?目前主要有两种机制:

一,采用扩展存储过程,使用触发器,触发器再调用扩展存储过程,扩展存储过程再把数据通过UDP的通讯方式,发送到应用程序,这样应用程序就会收到数据库更新的通知.

二,SQL Server2005以后的版本,其中Service Broker机制可实现此功能.

 

一扩展存储过程

        此方法的原理大概是这样的:通过触发器调用扩展存储过程,扩展存储过程再通过UDP的通讯方式,把信息发送到应用程序.

        说详细些,就是说,数据库能通过触发器来探知数据库中某些表的增、删、改动作,然后再调用存储过程,存储过程中调用写好的扩展存储过程,扩展存储过程通过UDP通信方式,把数据库发生的事情通知UDP服务端,原理就是这么简单。

1.创建扩展存储过程

        启动VC++6.0-->新建VC++项目-->扩展存储过程DLL,如图:

 

点击”OK”,在下图的输入框输入扩展存储过程名,如图:

这里创建完成,在工程中你将看到如下接口:

在此接口中编写你想要的操作.大概如下:

注:把动态库从内存中卸载的方法,执行SQL命令:DBCC动态库名 ( FREE )//动态库名不要带扩展名

 

详细细节见代码,到此扩展存储过程动态库创建完毕.为简单起见,可把创建好的动态库放在System32目录下,这样就是默认路径了。

 

2.测试动态库

   动态库创建好了,那么先测试一下,在数据库中创建扩展存储过程,然后调用存储过程,测试存储过程对动态库的调用是否成功。以下是所有创建,测试,与卸载的方法。

创建扩展存储过程,SQL命令如下:

      sp_addextendedproc ‘接口名称,上一步骤中第二个图片窗口输入的名称’, '动态库所在路径,可绝对路径亦可相对路径'

use master                                    

go                     

sp_addextendedproc 'TerminalFlagSynchro','.\\TerminalFlagSynchro.dll'

//删除过程:

sp_dropextendedproc 'TerminalFlagSynchro'

//把动态库从内存中卸载

DBCC TerminalFlagSynchro ( FREE )

测试: 

TerminalFlagSynchro 23554, '13427960374',3

 

3.创建触发器

测试成功后,创建触发器调用此过程即可.以下为创建触发器示例:

USESTATIC_DB

GO

/****** Object: Trigger [dbo].[CarInfoChange]   Script Date: 12/09/2011 20:14:18 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

-- =============================================

-- Author:     <Mingo>

-- Create date: <2011-12-10>

-- Description:<Car_info表修改触发>

-- =============================================

alterTRIGGER[dbo].[CarInfoChange]

  ON [dbo].[CAR_INFO]

  forINSERT,UPDATE,DELETE

AS

BEGIN

   SETNOCOUNTON;

   declare@TempCarIDint;

   declare@SIM   varchar(20);

   declare@Flagint;

   Set@Flag= 3;

   ifnot exists(select 1frominserted)--delete

       begin

           select @TempCarID=CARID,@SIM=GSM_NUMBERfromdeleted

           Set@Flag= 3;

       end

   elseifnotexists(select 1fromdeleted)--add

       begin

           select @TempCarID=CARID,@SIM=GSM_NUMBERfrominserted

           Set@Flag= 1;

       end

   else--update

       begin

           select @TempCarID=CARID,@SIM=GSM_NUMBERfrominserted

           Set@Flag= 2;

       end

   execmaster.dbo.TerminalFlagSynchro@TempCarID,@SIM,@Flag

END

 

以上只是简要说明,如果有不懂的,可以联系我。本人QQ:1148824289

源码下载链接:http://download.youkuaiyun.com/detail/mingojiang/4526362

 

转载请注明出处:http://blog.youkuaiyun.com/mingojiang

 

终端AI编程助手通知中心lemonaid:多会话状态管理与高效工作流整合 在软件开发中,终端多路复用器(如tmux)和AI编程助手(如Claude Code、Codex CLI)已成为提升效率的关键工具。然而,当开发者同时管理多个AI会话时,状态分散、通知遗漏的问题会严重打断工作流。其核心矛盾在于异步事件与开发者注意力同步需求的不匹配。lemonaid通过钩子(Hook)机制和中心化状态数据库(SQLite),构建了一个统一的通知与状态管理平台,实现了对多个AI助手会话状态的实时捕获、集中展示与一键跳转。该方案的价值在于将零散的交互整合为连贯可控的工作流,特别适用于复杂多任务开发 阅读详情

相关推荐

掌握SQL Server 2005与通知服务的编程艺术

本文深入探讨了SQL Server 2005数据库引擎的编程方法,包括创建CLR对象、数据库对象、执行备份与恢复等。同时,介绍了如何直接通过Web服务与SQL Server 2005函数进行通信。此外,还详细解读了构建SQL Server通知服务应用程序的流程,包括主要组件的配置和应用,以及如何通过XML文件定义应用程序配置,提供了一个关于如何创建和配置通知服务实例和应用程序定义文件的示例。

weixin_42509888的博客 410

Sqlserver数据库通知应用程序

现在有这么个需求,说是数据库的某些数据一旦有变化,立刻通知应用程序(Java Web项目) 应用程序即使调整信息以展示到大屏幕上. 解决办法大概有这么两个: 1.   因为项目是用的java , 可以弄个定时(java的定时或者spring的定时都可以) , 达到长时间轮训数据库, 一旦数据变化就可以更新大屏幕信息. 检测数据是否变化可以在表上加触发器,一旦修改或删除 新增等, 则记录一个最新

水神 5815

实时通知系统与数据库集成的实践教程

本文基于《实时系统编程》书籍的第13章和第7章,详细介绍了如何在Node.js项目中实现实时通知系统,包括使用Socket.IO管理用户状态(在线、离线、消息)的通知,以及如何将MongoDB数据库集成到项目中,借助Mongoose框架简化数据库操作。通过实例代码展示如何在用户状态变化时通过Socket.IO发送事件,并在客户端更新用户界面。此外,还探讨了Node.js更适合使用的NoSQL数据库类型,特别是MongoDB的集成,并简要说明了Mongoose框架的使用。

weixin_32456485的博客 461

SQL如何向应用程序发送消息?

SQL如何向应用程序发送消息? RaisError('出错拉!来自SQL-Server',16,1) 这是的16表示级别,可以更改,1表示状态,可以更改,后面二个数,必须写! 这个函数,在结合触发器使用时,当库存少于多少,就向应用程序提出一个报警,很好用 当某些字段或值不许更改时,也可以向应用程序报告消息 转载于:https://www.cnblogs.com/...

weixin_34102807的博客 217

数据库主动式通知编程源码

数据库表中的增、删、改操作通知应用程序的源码 关于编程的原理介绍,在本人博客中有详尽阐述: http://blog.youkuaiyun.com/mingojiang

实时推送数据库变化(SignalR)

SignalR实时推送数据库变化,环境 vs2017 mvc5 .net 4.6  sqlserver2012

金仓数据库KingbaseES客户端编程接口指南-ado.net(11. 等待通知)

由于很少使用异步通知并且处理可能很复杂,因此 Kdbndp 仅将通知消息作为常规(同步)查询交互的一部分进行处理。也就是说,如果发送了异步通知,Kdbndp 只会在下一次发送和处理命令时处理它并向用户发出事件。KingbaseES有一个特性,可以在客户端之间发送任意通知消息。例如,一个客户端可能会等到另一个客户端通知它应该执行的任务。通知本质上是异步的,它们可以再任何时候到达。这将使您的线程阻塞,直到收到单个通知 (请注意,存在超时版本和异步版本)。/* 此处将阻塞线程 */

arthemis_14的博客 182

YOLOV8多模态(可见光+红外光目标检测任务,基于Ultralytics官方代码实现)

torch 2.3.1 torchvision 0.18.1 Python 3.8.19 tensorrt 8.5.3.1DroneVehicle数据集下载地址DroneVehicle 数据集由无人机采集的 56,878 张图像组成,其中一半是 RGB 图像,其余是红外图像。我们为这 5 个类别制作了丰富的注释,其中包含定向边界框。其中,汽车在 RGB 图像中有 389,779 个注释,在

Mjy的博客 7583

AOP(面向切面编程)详解及应用(通俗易懂)

在开发中,我们经常需要在数据库插入或更新操作时自动填充一些公共字段,例如 createTime、createUser、updateTime 和 updateUser。这种重复性的代码逻辑如果直接写在业务层中,不仅冗余,还会增加代码的维护成本。为了解决这一问题,可以使用 AOP(面向切面编程) 的思想,使用一个自定义的注解就能够轻松实现公共字段的自动填充。

qq_53604504的博客 3002

张量积曲面:数学原理与Python实现

Suv∑i0m∑j0nPij⋅Bipu⋅BjqvSuvi0∑m​j0∑n​Pij​⋅Bip​u⋅Bjq​v其中PijP_{i,j}Pij​是控制点网格,BipuB_i^p(u)Bip​u和BjqvB_j^q(v)Bjq​v是基函数,分别沿uuu和vvv方向定义。

T20151470的博客 1154

大疆智图002:大疆智图倾斜摄影建模流程

本文主要介绍大疆智图倾斜摄影建模流程,包括新建工程、成果路径设置、导入照片、第一遍空三、像控刺点、第二遍空三、精度报告查看、三维重建等流程。

qq_31762031的博客 1万+

ADO数据库编程入门

<br />ADO 是目前在Windows环境中比较流行的客户端数据库编程技术。ADO是建立在OLE DB底层技术之上的高级编程接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的编程接口,因而得到了广泛的应用。而且按微软公司的意图,OLE DB和ADO将逐步取代 ODBC和DAO。现在介绍ADO各种应用的文章和书籍有很多,本文着重站在初学者的角度,简要探讨一下在VC++中使用ADO编程时的一些问题。我们希望阅读本文之前,您对ADO技术的基本原理有一些了解

Augusdi的专栏 1191

LSCM最小二乘保角参数化

LSCM最小二乘保角参数化 最小二乘思想 已知一组点的数据(x,y) x x1x_1x1​ x2x_2x2​ x3x_3x3​ … xnx_nxn​ y y1y_1y1​ y2y_2y2​ y3y_3y3​ … yny_nyn​ 可以近似为线性关系 y=ax+by=ax+by=ax+b ,目标为确定常数 aaa , bbb ; 解法:找到 aaa , bbb ,使得所有 yiy_iyi​ 与 axi+bax_i+baxi​+b 偏差的平方和 Q=∑i=1n(yi−axi−b)2 Q=\s

weixin_49732532的博客 4252

《电脑编程技巧与维护》2011年第24期刊登出《DB 查询分析器》批量执行DML语句并返回更详细的信息...

&lt;wbr&gt;国家级科技期刊《电脑编程技巧与维护》编辑部寄来的2011年第24期(即12月下)样刊,在2011年第24期(即12月 下),刊登出了本人的论文------“《DB 查询分析器》批量执行DML语句并返回更详细的信息”。&lt;wbr&gt;&lt;/wbr&gt;&lt;/wbr&gt; &lt;wbr&gt; 在《电脑编程技巧与维护》主页、“中国期刊全文数据库”中均...

数据库天地 107

ISO13849功能安全从入门到精通(3):安全功能及其对降低风险的贡献4

例如,如果机器必须在有限速度下运行时进行设置,那么在低加速度值下进行设置时,参数P1将是正确的选择:随着危险缓慢出现并给予足够的运动自由,操作员将能够移出危险区域。例如,在无故障的条件下,在操作者的手的方向移动的滚子不能陷住它。在所有其他情况下,F1是正确的选择,前提是危险暴露的持续时间不超过机器总操作时间的1/20。需求来源于必要的风险降低。由于这些考虑而降低的PLr在任何情况下都不得低于通过比较方式考虑的机器的PLr,因为并不能从事故发生率低和严重程度低得出实施的安全功能提供的安全水平高于要求。

wdconan001的博客 833

机器人学(三):手眼标定

主要讲了eye-to-hand的手眼标定求解算法,包括AX=XB和AX=YB两种情况,包含SVD法、Tsai-Lenz法、最小二乘法等,从原理到解法再到算法代码实现,包括matlab代码、C++代码、库的使用等,简单明了,容易在实际项目中进行应用

行者无疆的博客 2553

Spring框架——AOP前置通知,javaio流面试题

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。2、Redis学习笔记及学习思维脑图。

2401_84139095的博客 695

一文读懂5G网络整体架构(接入网+承载网+核心网)

接入网重构分级(分工更细、效率更高)、承载网三段化升级(管道更宽、更智能)、核心网服务化云化(管理更灵活、成本更低)最终实现“成本最优、资源灵活、场景适配”,才能支撑自动驾驶、工业互联网、智慧城市、VR/AR等各种新场景,真正走进我们的生活。

鲸落寰宇 427

ADO数据库编程入门(上)

转自:http://www.cppblog.com/ivenher/articles/2293.html ADO 是目前在Windows环境中比较流行的客户端数据库编程技术。A DO是建立在OLE DB底层技术之上的高级编程接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的编程接口,因而得到了广泛的应用。 而且按微软公司的意图,OLE D

白永辉的专栏 1231

Python爬取公交线路信息及站点shp数据 文末附数据下载地址

三、现在已经获取到了各个线路名称、链接,以及所途径的上下行站点,那么接下来就应该对开始对第三页url进行信息采集,即本次爬虫的最终目的:爬取所有站点的GPS坐标数据。但坑就坑在,二环一号线属于环线,所以只有左侧有站点数据,而其他非环线车次的站点数据分有上下行,如果用正则匹配,则分不清楚到底哪些是上行站点哪些是下行站点。以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的网站为公交网,废话不多说直接开始吧。checi=二环一号线。

J_Giser的博客 1316

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

研究VBA、Word和数据库的联合编程

  摘要 本文介绍了用VBA作为开发语言,用Access或foxpro作为数据库, 用word中的书签作为媒介,实现数据库在Word中的自动替换方法,并以通知书为例给出了源程序。VBA Word 数据库 bookmark(书签)在实际工作中,经常需要将数据库中的数据放在Word文挡中。例如学校每期都要将学生的成绩填入到通知书中寄发给学生(家庭)。传统的实现方法是在Wor

monicaxiaoy的专栏 809

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python爬虫爬取四川农业大学教务网通知存储至mysql数据库

最近在学习 sql 数据库相关知识,苦于没有足够多的数据用于存储(其实是闲的蛋疼没事做),遂产生想法:将学校教务系统通知公告标题及链接等信息存储至我的sql数据库中。

2401_82586867的博客 936

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Visual C++ ADO数据库编程入门(上)

ADO 是目前在Windows环境中比较流行的客户端数据库编程技术。ADO是建立在OLE DB底层技术之上的高级编程接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的编程接口,因而得到了广泛的应用。而且按微软公司的意图,OLE DB和ADO将逐步取代 ODBC和DAO。现在介绍ADO各种应用的文章和书籍有很多,本文着重站在初学者的角度,简要探讨

学而不思则罔 722

Spring boot从入门到实战 答疑1

Spring boot从入门到实战 第一章

m0_56657733的博客 176
上一篇: 智能交通监管平台
下一篇: 钩子(hook)编程
MingoJiang
博客等级 码龄14年 161粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MingoJiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值