sqlserver插入数据监控(数据库Service Broker)

41 篇文章 1 订阅
29 篇文章 3 订阅

首先 开启数据库Service Broker (使用master权限)

ALTER DATABASE DBName SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE DBName SET ENABLE_BROKER;

具体查询方式:

 class Program
     {
         static string connectionString = "Server=.;Database=testDemo;User Id=sa;Password=123456;MultipleActiveResultSets=true";
         static void Main(string[] args)
         {
             SqlDependency.Start(connectionString);//传入连接字符串,启动基于数据库的监听
             UpdateGrid();
             Console.Read();
             SqlDependency.Stop(connectionString);//传入连接字符串,关闭基于数据库的监听(一旦关闭,则只会识别一次,然后就自定关闭了)
         }
         private static void UpdateGrid()
         {
              using (SqlConnection connection = new SqlConnection(ConectionStr))
            {

                //依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[]
                using (SqlCommand command = new SqlCommand("SELECT ZhifuSingle,DibangNo,JinE,ZhifuOrder  FROM dbo.ZhifuInfos", connection))
                {
                    command.CommandType = CommandType.Text;
                    //OPCommon.LogWrite.WriteLog(ConectionStr);
                    connection.Open();
                    SqlDependency dependency = new SqlDependency(command);
                    dependency.OnChange += new OnChangeEventHandler(dependency_OnChange); 
                    //Console.WriteLine();
                    DataTable DT = new DataTable();
                    DT.Load(command.ExecuteReader(CommandBehavior.CloseConnection));
                    ZhifuInfos ZhifuResult = new ZhifuInfos();
                    if (DT != null && DT.Rows.Count > 0)
                    {
                        DataRow DR = DT.Rows[0];
                        ZhifuResult.ZhifuSingle = DR["ZhifuSingle"].ToString();//支付标记
                        ZhifuResult.DibangNo = DR["DibangNo"].ToString();//地磅编号;
                        ZhifuResult.JinE = ConvertType.GetDecimal(DR["JinE"]);//金额;
                        ZhifuResult.ZhifuOrder = DR["ZhifuOrder"].ToString();//支付订单号;
                    }
                    if (!string.IsNullOrWhiteSpace(ZhifuResult.ZhifuSingle) && ZhifuResult.ZhifuSingle == ZhifuSingle)//支付完成
                    {
                        ShowThrendEndzhifu();//支付完成显示称重数据
                    }

                    ZhifuSingle = string.Empty;
                }
            } 
         }
         private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)
         {
           SqlDependency dependency = sender as SqlDependency;
            dependency.OnChange -= dependency_OnChange;

             if (e.Type == SqlNotificationType.Change) //只有数据发生变化时,才重新获取并数据
             {
                 UpdateGrid();
             }
         }
     }

使用请注意:SqlNotificationType.Change 内包含数据所有操作数据包含 delete 删除,update 修改 insert插入都会触发此事件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值