需要sql依赖和OnChange事件ASP.Net WebForm的指南

时间:2014-08-26 19:06:00

标签: asp.net sqldependency

我们知道当我们使用sql依赖类时,我们需要使用OnChange事件。在受监视的db表中发生数据更改时OnChange事件触发。请参阅我的OnChange事件代码。

protected void Application_Start(Object sender, EventArgs e)
        {

            System.Data.SqlClient.SqlDependency.Start(connectionString);
            RegisterNotification();
        }
        static SqlDependency dep;
        private static void RegisterNotification()
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    SqlCommand cmd = conn.CreateCommand();
                    cmd.CommandText = "SELECT ID, Name FROM [bba-reman].TestTable";
                    dep = new SqlDependency(cmd);
                    dep.OnChange += new OnChangeEventHandler(OnDataChange);
                    SqlDataReader dr = cmd.ExecuteReader();
                    {
                        while (dr.Read())
                        {
                            Console.WriteLine("Name = " + dr[1].ToString());
                        }
                    }
                    dr.Close();

                    Console.WriteLine("Waiting for any data changes...\nPress to end program.");
                    Console.ReadLine();
                }
            }
            finally
            {
                //SqlDependency.Stop(connStr);
            }

        }

        static void OnDataChange(object sender, SqlNotificationEventArgs e)
        {
            Console.WriteLine(e.Info.ToString());
            Console.WriteLine(e.Source.ToString());
            RegisterNotification();
        }

        protected void Application_End(Object sender, EventArgs e)
        {
            System.Data.SqlClient.SqlDependency.Stop(connectionString);
        }

首先我没有从OnDataChange事件中调用RegisterNotification()函数然后我注意到当第1次表中发生数据更改然后OnDataChange事件被触发但是从第2次表中发生数据更改时OnDataChange事件没有触发。这就是我从OnDataChange事件中调用RegisterNotification()函数的原因,并且每当数据在表中发生更改时都会发出通知,然后每次都会触发OnDataChange事件。

1)所以我想知道我应该从OnDataChange事件调用RegisterNotification()函数吗?

2)如果我们不打电话那么我面临数据变更通知的问题。所以引导我在我的代码中有任何错误。寻找指引。感谢

0 个答案:

没有答案