zoukankan      html  css  js  c++  java
  • sqlDependency监控数据库数据变化,自动通知

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Data;
    
    namespace Sample2
    {
        class Program
        {
            private static string _connStr;
    
            static void Main(string[] args)
            {
                _connStr = "Data Source=localhost;User Id=sa;Password=xxx;Database=xxx;Pooling=true;Max Pool Size=600;Min Pool Size=0;";
                SqlDependency.Start(_connStr);//传入连接字符串,启动基于数据库的监听
                UpdateGrid();
                Console.Read();
            }
    
            private static void UpdateGrid()
            {
                using (SqlConnection connection = new SqlConnection(_connStr))
                {
                    connection.Open();
                    //依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[]
                    using (SqlCommand command = new SqlCommand("select D_Id,D_Name,D_Password,D_Else,D_Amount From [dbo].[TestTable]", connection))
                    {
                        
                        command.CommandType = CommandType.Text;
                        SqlDependency dependency = new SqlDependency(command);
                        dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
                        using (SqlDataReader sdr = command.ExecuteReader())
                        {
                            Console.WriteLine();
                            while (sdr.Read())
                            {
                                Console.WriteLine("{0}---{1}---{2}---{3}---{4}", sdr["D_Id"].ToString(),
                                    sdr["D_Name"].ToString(), sdr["D_Password"].ToString(), sdr["D_Else"].ToString(), sdr["D_Amount"].ToString());
                            }
                            sdr.Close();
                        }
                    }
                }
            }
    
            private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)
            {
                UpdateGrid();
            }
        }
    }
    use master
    ALTER DATABASE WINE_CLOUD set ENABLE_BROKER
    
    /*
    想启用Broker时,出现以下错误:
    无法启用数据库 "db2" 中的 Service Broker,因为已存在启用的具有相同 ID 的 Service Broker。
    解决办法:
    use master
    alter database db2 set NEW_BROKER
    
    然后再运行
    use master
    ALTER DATABASE db2 set ENABLE_BROKER
    */
    --验证是否能启用
    go
    Select DATABASEPROPERTYEX('WINE_CLOUD','IsBrokerEnabled')
    
    --修改数据库使用者(至关重要)
    exec sp_changedbowner @loginame = 'sa'

  • 相关阅读:
    DragDrop 注册失败的问题
    《精通.NET互操作:P/Invoke,C++ Interop和COM Interop》推荐的工具列表
    勇于探索,及时总结,拥有自信!个人工作感受总结篇……
    C#4.0新特性对.NET互操作的影响(转载)
    UCHome: IP控制
    UCHome: SQL注入式攻击
    Windows下Cygwin模拟GCC开发
    序列化和反序列化
    UCHome: 解读common.php(转)
    UCHome: 提交检查
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234040.html
Copyright © 2011-2022 走看看