我们知道当我们使用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)如果我们不打电话那么我面临数据变更通知的问题。所以引导我在我的代码中有任何错误。寻找指引。感谢