zoukankan      html  css  js  c++  java
  • 使用SqlDependency将数据库中的数据更新到应用

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
    
        System.Data.SqlClient.SqlConnection conn = null;
        System.Data.SqlClient.SqlCommand command = null;
        // Set connection string
        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder
        {
            // set server
            DataSource = @"datasource name",
            // set database
            InitialCatalog = @"catalog name",
            // access the database using the existing windows security certificate
            IntegratedSecurity = true
        };
    
        private void Form1_Load(object sender, EventArgs e)
        {
    
            conn = new System.Data.SqlClient.SqlConnection(builder.ConnectionString);
            command = conn.CreateCommand();
            command.CommandText = "select id,name from dbo.tabletest where id<>20 order by id desc ";
    
            // Start
            SqlDependency.Start(builder.ConnectionString);
            // Get data
            GetData();
        }
    
        private void GetData()
        {
            command.Notification = null;
            SqlDependency dependency = new SqlDependency(command);
            dependency.OnChange += new OnChangeEventHandler(sqlDependency_OnChange);
    
            using (SqlDataAdapter adapter = new SqlDataAdapter(command))
            {
                System.Data.DataSet ds = new DataSet();
                adapter.Fill(ds, "test");
                dataGridView1.DataSource = ds.Tables["test"];
            }
    
        }
    
        void sqlDependency_OnChange(object sender, SqlNotificationEventArgs e)
        {
            // Because it is a child thread, you need to update the ui with the invoke method.
            if (this.InvokeRequired)
            {
                this.Invoke(new OnChangeEventHandler(sqlDependency_OnChange), new object[] { sender, e });
            }
            else
            {
                SqlDependency dependency = (SqlDependency)sender;
                dependency.OnChange -= sqlDependency_OnChange;
                // After the notification, the current dependency is invalid, you need to re-get the data and set the notification.
                GetData();
            }
        }
    
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            // Clear resource
            SqlDependency.Stop(builder.ConnectionString);
            conn.Close();
            conn.Dispose();
        }
    }

    Result:

  • 相关阅读:
    sql 执行动态语句
    Cookie/Session机制详解
    .NET简谈事务、分布式事务处理
    .NET(C#)中不同级别的安全透明代码对类型的影响
    C#开发微信门户及应用(1)开始使用微信接口
    WIN7管理工具配置ODBC数据源系统DSN中无Oracle,Sybase驱动的解决方法
    题解 smoj 2806 【建筑物】
    题解 luogu P2568 GCD
    题解 luogu P1251 【餐巾计划问题】
    0377组合总和IV Marathon
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/10365442.html
Copyright © 2011-2022 走看看