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:

  • 相关阅读:
    异或(^/XOR)的研究
    FastJson的使用
    KindEditor使用
    Java之Collection一
    Java之String
    Github基本使用
    Ubuntu jekyll git使用小记
    使用html editor 打开freemarker文件
    struts.xml 标签顺序
    multipart/form-data ajax 提交问题(未解决)
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/10365442.html
Copyright © 2011-2022 走看看