下面这个程序可以监听字段1是否改变并显示出来,但是我测试了下,发现它仅仅判断的是是否update了,就算update的是一样的值
我对c#不懂,请高手帮忙改一下,只有字段1 update的是不一样的值,才继续执行dependency_OnChange这个过程
namespace ConsoleApplication1
{
    class Program
    {
        private static string _connStr;
        static void Main(string[] args)
        {
            _connStr = "Data Source=127.0.0.1;Initial Catalog=库名;Persist Security Info=True;User ID=sa;Password=sa";
            SqlDependency.Start(_connStr);
            UpdateGrid();
            Console.Read();
        }
        public static void UpdateGrid()
        {   
          using (SqlConnection connection = new SqlConnection(_connStr))
            {
                using (SqlCommand command = new SqlCommand("select [字段1] From [dbo].[表名]", connection))
                {
                    command.CommandType = CommandType.Text;
                    connection.Open();
                    SqlDependency dependency = new SqlDependency(command);
                    SqlDataReader sdr = command.ExecuteReader();
                   Console.WriteLine();
                   while (sdr.Read())
                   {
                       Console.WriteLine(sdr["字段1"].ToString());
                   }
                   sdr.Close();
                   dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
                }
            }
        }
        private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)
        {  
          UpdateGrid();
        }
    }
}

解决方案 »

  1.   

    SqlDependency的机制不一样,并非普通的sql查询,所以性能会非常好,当然带来的问题是不会做这些字段更新的值是原先的值就不提示的功能。
    你可以反过来考虑,先查询如果更新的值和原来一样就不更新。
      

  2.   

    使用SqlNotificationRequest 或 SqlDependency 都可以实现这个功能:看看MSDN上的这个例子:  ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/WD_ADONET/html/2dcb5c4e-1a83-4cf7-af65-721470be9deb.htm
      

  3.   

    2楼提供的链接要装msdn才能看得到吧
    回复1楼,那都是一样的呀,我不懂c#语言,试着写了没成功,函数的参数传递都把我难住了
      

  4.   

    回sdl2005lyx,只装了VS2008,你能提供绝对的URL吗
      

  5.   

    好像看到了有一个HasChanges属性,不知道换到这里面来具体怎么用
      

  6.   

     http://msdn.microsoft.com/zh-cn/library/3ht3391b%28v=vs.80%29.aspx