缓存依赖注意

1.表名必须要加dbo.,否则会不缓存每次都会读数据库。

2.如下语句要写在定义Dataset的前面,否则会更新了数据表,缓存还是没失效,显示的旧数据。

System.Web.Caching.SqlCacheDependency sqlcache = new System.Web.Caching.SqlCacheDependency(commad);

 

protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder strSql = new StringBuilder();
        //strSql.Append("SELECT [id] ,[value] FROM [dbo].[Test]");


        strSql.Append("select ");

        strSql.Append(" Name,LoginID,PassWord,status,MobileNo,ItvNo ");
        strSql.Append(" FROM dbo.Member ");


        this.data.DataSource = GetMember(strSql.ToString());// ExecuteAndCache(strSql.ToString());//
        this.data.DataBind();
    }

 


    private DataTable GetMember(string strSql)
    {

        //string key = strSql;// "T1";

        if (HttpRuntime.Cache[strSql] == null)
        {
         
            using (SqlConnection sqlconn = new SqlConnection(SqlHelp.conn))
            {

                using (SqlCommand commad = new SqlCommand())
                {
                    System.Web.Caching.SqlCacheDependency sqlcache = new System.Web.Caching.SqlCacheDependency(commad);
                    commad.CommandType = CommandType.Text;
                    commad.CommandText = strSql;                   
                    commad.Connection = sqlconn;
                   

                    DataSet ds = new DataSet();                 

                    new SqlDataAdapter(commad).Fill(ds);
                   
                    HttpRuntime.Cache.Insert(strSql, ds, sqlcache);//添加到缓存中
                }

            }


        }

        DataSet tds = HttpRuntime.Cache[strSql] as DataSet;
        if (tds != null)
            return tds.Tables[0];
        else
            return null;
    }

 

 

 

 

alter database [Test] set enable_broker

 

select databasepropertyex('[Test]','IsBrokerEnabled')

posted on 2012-08-10 14:49  antyi  阅读(135)  评论(0编辑  收藏  举报

导航