解决方案 »

  1.   


    using System;  
    using System.Configuration;  
    using System.Data;  
    using System.Data.SqlClient;  
      
    namespace SqlDependencyTest  
    {  
        class Program  
        {  
            private static string _connStr;  
      
            static void Main(string[] args)  
            {  
                _connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ToString();  
                SqlDependency.Start(_connStr);//传入连接字符串,启动基于数据库的监听   
                UpdateGrid();  
      
                Console.Read();  
            }  
      
      
            private static void UpdateGrid()  
            {  
                using (SqlConnection connection = new SqlConnection(_connStr))  
                {  
                    //依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[]   
                    using (SqlCommand command = new SqlCommand("select ID,UserID,[Message] From [dbo].[Messages]", connection))  
                    {  
                        command.CommandType = CommandType.Text;  
                        connection.Open();  
                        SqlDependency dependency = new SqlDependency(command);  
                        dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);  
      
                       SqlDataReader sdr = command.ExecuteReader();  
                       Console.WriteLine();  
                       while (sdr.Read())  
                       {  
                           Console.WriteLine("Id:{0}\tUserId:{1}\tMessage:{2}",sdr["ID"].ToString(), sdr["UserId"].ToString(),   
      
    sdr["Message"].ToString());  
                       }  
                       sdr.Close();  
                    }  
                }  
            }  
      
      
            private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)  
            {  
                UpdateGrid();  
            }  
        }  
    }  
    我这有个控制台监听的,用这个写到winform里可用,写到ASP.NET中值是传过去了,但是页面不刷新显示。
      

  2.   


    我这有个控制台监听的,用这个写到winform里可用,写到ASP.NET中值是传过去了,但是页面不刷新显示。
    值都过去了,那就是你显示的问题了
      

  3.   


    我这有个控制台监听的,用这个写到winform里可用,写到ASP.NET中值是传过去了,但是页面不刷新显示。
    值都过去了,那就是你显示的问题了不知道为啥页面没有刷新啊,我在页面上加了个Button写了个Button_Click事件,用来提取最大ID那条数据,点击后能出来数据。但是我用数据库变化就调用这个button_click事件页面却不显示数据,用debug跑的是有值的。但是页面没有刷新啊,这该怎么改啊。
      

  4.   

    你那监控的代码我不确定是不是另外一个线程的,不过你还是可以试试用委托来更改页面值试试,委托写法网上很多,自己学会研究下;写个小demo,成功了再放到代码里去;渔而不鱼,你懂的
      

  5.   

    SqlDependency
    看这个行不行。。
      

  6.   

    我上面贴的代码就是找的这个里面的,但是不知道如何叫它显示到页面上。winform中可行。
      

  7.   

    我上面贴的代码就是找的这个里面的,但是不知道如何叫它显示到页面上。winform中可行。
     Console.WriteLine("Id:{0}\tUserId:{1}\tMessage:{2}",sdr["ID"].ToString(), sdr["UserId"].ToString(),   
    sdr["Message"].ToString());把这个输出语句改成三个label在窗体上试试,看看是不是能改变三个label,你的Console.WriteLine是在窗体上输出的意思,不同语言输出语句不同的  
      

  8.   

    我上面贴的代码就是找的这个里面的,但是不知道如何叫它显示到页面上。winform中可行。
     Console.WriteLine("Id:{0}\tUserId:{1}\tMessage:{2}",sdr["ID"].ToString(), sdr["UserId"].ToString(),   
    sdr["Message"].ToString());把这个输出语句改成三个label在窗体上试试,看看是不是能改变三个label,你的Console.WriteLine是在窗体上输出的意思,不同语言输出语句不同的  
                        string b = Convert.ToString(dt.Rows[0]["ID"]);
                        string c = Convert.ToString(dt.Rows[0]["UserID"]);
                        string d = Convert.ToString(dt.Rows[0]["Message"]);
                        this.textbox1.text = b;
                        this.textbox2.text = c;
                        this.textbox3.text = d;
    我代码里这么写的,只是页面不刷新罢了。
      

  9.   

    我就是不明白为啥点button的时候页面能刷新显示值,用数据库方法调用它却不刷新页面呢。
      

  10.   

    Winform也是这样更改控件的值,而更改成功?
      

  11.   

    恩,winform能用,数据库插入数据就能显示,ASP中代码也都跑到了,只是页面不显示罢了。
      

  12.   

    恩,winform能用,数据库插入数据就能显示,ASP中代码也都跑到了,只是页面不显示罢了。如果更改控件成功的话就不是之前上面我说的多线程问题了,网页本人不是很了解,因专稿窗体太久网页基本忘记,很是抱歉!那现在就只是页面更改不成功的问题了,可以查下资料看看哪些情况下更改页面值会出现更改不了,然后慢慢尝试喽;有人力资源就更高,直接问,没有就自己对病下药!
      

  13.   

    恩,winform能用,数据库插入数据就能显示,ASP中代码也都跑到了,只是页面不显示罢了。如果更改控件成功的话就不是之前上面我说的多线程问题了,网页本人不是很了解,因专稿窗体太久网页基本忘记,很是抱歉!那现在就只是页面更改不成功的问题了,可以查下资料看看哪些情况下更改页面值会出现更改不了,然后慢慢尝试喽;有人力资源就更高,直接问,没有就自己对病下药!
    人力资源说感冒了,不想帮忙,要么就是和妹子聊天比较重要。
      

  14.   

    不想用定时刷新的,要是定时刷新的话和直接绑定表中最新的一条记录,时时刷新一样了,我是想要数据库中插入数据就刷新的这种
    把定时改成 监控数据库插入之后取取最新数据 就可以了啊
    这个不会啊,定时的话写个setTimeout就OK了,你这监控插入的怎么写啊。说着挺简单了。
      

  15.   

    不想用定时刷新的,要是定时刷新的话和直接绑定表中最新的一条记录,时时刷新一样了,我是想要数据库中插入数据就刷新的这种
    把定时改成 监控数据库插入之后取取最新数据 就可以了啊
    这个不会啊,定时的话写个setTimeout就OK了,你这监控插入的怎么写啊。说着挺简单了。
    监控比较烦的,还是要去和数据库连接 还是要定时去看 不如直接用定时刷新好了
      

  16.   

    不想用定时刷新的,要是定时刷新的话和直接绑定表中最新的一条记录,时时刷新一样了,我是想要数据库中插入数据就刷新的这种
    把定时改成 监控数据库插入之后取取最新数据 就可以了啊
    这个不会啊,定时的话写个setTimeout就OK了,你这监控插入的怎么写啊。说着挺简单了。
    监控比较烦的,还是要去和数据库连接 还是要定时去看 不如直接用定时刷新好了
    上司要求啊,我昨天给他个定时刷新的,他说这个不好,非得弄个数据库变就显示的。
      

  17.   

    不想用定时刷新的,要是定时刷新的话和直接绑定表中最新的一条记录,时时刷新一样了,我是想要数据库中插入数据就刷新的这种
    把定时改成 监控数据库插入之后取取最新数据 就可以了啊
    这个不会啊,定时的话写个setTimeout就OK了,你这监控插入的怎么写啊。说着挺简单了。
    监控比较烦的,还是要去和数据库连接 还是要定时去看 不如直接用定时刷新好了
    Triger 可以写成AfterInsert 然后去做某些事情 比如 AfterInsert之后你修改数据库的某个字段,然后定时去看这个字段是否表示有更新,如果有则查出来。你不觉得这样很烦么?要查的东西不多的话直接查好了
      

  18.   

    SQL看SQL完全手册第四版,.NET看C# WEB应用程序入门经典,这些书都有电子书
      

  19.   

    那就用ajax局部刷新吧,当插入记录时,调用一下ajax去获取记录,插入记录功能最好么也是用ajax完成。
      

  20.   

    插入记录功能怎么用ajax写啊。局部刷新是用setTimeout还是根据插入记录刷新啊,插入记录刷新不会写哦,求指导。
      

  21.   

    插入记录功能怎么用ajax写啊。局部刷新是用setTimeout还是根据插入记录刷新啊,插入记录刷新不会写哦,求指导。局部刷新就是当用ajax函数请求一个ashx页面时,就将记录插入到数据库去,并返回一个正常状态同时接收状态并判断状态正确的话就再用一个ajax函数请求另一个ashx页面获取记录,然后接收结果并显示在页面上。
      

  22.   

    去看看jquery的例子你就会了。
      

  23.   

    可以考虑用数据库缓存依赖SqlCacheDependency,具体可参考http://msdn.microsoft.com/zh-cn/library/ms178604(v=vs.100).aspx或者博客园http://www.cnblogs.com/it563/articles/1434009.html
      

  24.   

    这么简单还要来问,回去多看看DataTable
      

  25.   

    页面刷新问题看DataTable,智商令人捉鸡啊