• 使用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:

  • 相关阅读:
    WinDbg 图形界面功能(一)
    WinDbg的安装、配置和功能
    windbg调试托管代码 .Net clr
    win32线程栈溢出问题 (二)
    win32线程栈溢出问题 (一)
    WinDbg常用命令系列---查看线程调用栈命令K*简介
    BCD码
    Intel 80386 CPU
    Intel 80286 CPU
    Intel 8086 CPU
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/10365442.html
Copyright © 2020-2023  润新知