zoukankan      html  css  js  c++  java
  • 使用SqlDependency实时监听SQL server数据库变化并执行事件

    sql server设置:ALTER DATABASE <DatabaseName> SET ENABLE_BROKER;语句让相应的数据库启用监听服务,以便支持SqlDependency特性

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private static string conn = "数据库连接语句";
            static SqlDependency dependency;
            private void Form1_Load(object sender, EventArgs e)
            {
                //string sql = "SELECT u_ipaddress FROM WPS_User_M";
                //DataTable dt = SqlHelper.Query(sql).Tables[0];
                //dataGridView1.DataSource = dt;
    
                //Start和Stop方法
                SqlDependency.Start(conn);
                Update(conn);
            }
    
            private static void Update(string conn)
            {
                using (
                SqlConnection connection =
                new SqlConnection(conn))
                {
                    //此处 要注意 不能使用* 表名要加[dbo] 否则会出现一直调用执行 OnChange
                    string sql = "SELECT u_ipaddress FROM dbo.WPS_User_M";
    
                    using (SqlCommand command = new SqlCommand(sql, connection))
                    {
                        connection.Open();
                        command.CommandType = CommandType.Text;
                        dependency = new SqlDependency(command);
                        dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
                        //必须要执行一下command
                        command.ExecuteNonQuery();
                        Console.WriteLine(dependency.HasChanges);
                    }
                }
            }
            private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)
            {
                Console.WriteLine("onchange方法中:" + dependency.HasChanges);
                Console.WriteLine("数据库数据发生变化" + DateTime.Now);
                //这里要再次调用
                Update(conn);
            }
        }
    }
  • 相关阅读:
    linux 卸载软件
    RYU基础整理
    FlowVisor相关
    RYU的GUI安装
    Ubuntu下apt-get与pip安装命令的区别
    mininet安装,使用
    Java中的Enum(枚举)用法介绍
    jquery选择器大全参考
    Oracle数据库SQL语句操作大全汇总
    SQLServer数据库语句大全汇总
  • 原文地址:https://www.cnblogs.com/Mzg121584668/p/8583581.html
Copyright © 2011-2022 走看看