关于SQL Server 2005 与 Asp.net 2.0 中的 SQLCacheDependency 的使用

多次试验发现这个基本上是,想它缓存时不缓存,想他失效时他有不失效.

有以下几点需要注意

1.首先在相应数据库来启动Service Broker 代码如下

Alert DataBase wow52cn Set Enable_Broker

 

2.在Global.asax 文件中需要以下代码来启动数据库缓存通知

    void Application_Start(object sender, EventArgs e)
    {
        // 在应用程序启动时运行的代码
        System.Data.SqlClient.SqlDependency.Start(ConfigurationManager.ConnectionStrings["wow52.cn"].ConnectionString);

    }
   
    void Application_End(object sender, EventArgs e)
    {
        //  在应用程序关闭时运行的代码

        System.Data.SqlClient.SqlDependency.Stop(ConfigurationManager.ConnectionStrings["wow52.cn"].ConnectionString);
    } 

3.数据操作代码

    public DataSet GetData()
    {
        DataSet ds = HttpRuntime.Cache["URLListKEY"] as DataSet;
        if (ds != null)
        {
            Label1.Text = "来自Cache";
            return ds;

        }
        else
        {
            Label1.Text = "数据库";
            ds = new DataSet();
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DuoWanKill"].ConnectionString);
            SqlCommand cmd = new SqlCommand("Select   urlId,url,ClassId From dbo.urlList where urlId >100 order By urlId DESC", conn);

            SqlCacheDependency sqlDep = new SqlCacheDependency(cmd);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            conn.Open();
            da.Fill(ds);
            conn.Close();
            HttpRuntime.Cache.Insert("URLListKEY", ds, sqlDep, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration);
            return ds;
        }
    }

注意,其中Select urlid....查询中不要有top 表名应加schema 如dbo.urlList等具体看sql 的文当

你在测试时最好,用Select FieldName1 ,FieldName2...From dbo.TableName 这样的句字

还有在电脑内存不足时建议重新启动后在测试,这样效果明显点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值