我想实现的功能是:
一条SQL语句第一次执行时把结果缓存在那里
供后面访问的人使用,就不必再从数据库中读取了
要能设缓存时间,比如缓存只保留1小时,过期后又重新从数据库读取新的数据,咱个实现啊?

解决方案 »

  1.   

    Cache.Insert(
    string key,
    object value,
    CacheDependency dependencies,//依赖,设置缓存有效的依赖性,比如设置和一个文件相关,文件一变,就失效
    DateTime absoluteExpireation, //设置固定的过期时间
    TimeSpan slidingExpiration, //设置最后一次访问后多长时间过期
    CachePriority priority, //设置内存不足,缓存自动清除时,缓存的重要性,可不可以清除
    CacheItemRemovedCallback onRemoveCallback // 设置在清除时引发的事件
    )
    Cache.Add("Test","test", null,System.DateTime.Now.AddDays(10),TimeSpan.Zero, CacheItemPriority.Default,null); } 
      

  2.   

    Cache 网上找这个类的资料。
      

  3.   

    先判断缓存有没有存在
    存在的话从缓存中取,不存在查询出记录添加到缓存里if(Cache["Brand"]==null)
    {
       DataTable dt = SqlHelp.ExecuteDataTable("select * from table");
       Cache.Insert("Brand",dt,null,DateTime.Now.AddDays(1),Timespan.Zero);
    }
    else
    {
        DataTable dtable = Cache["Brand"] as DataTable;
        ..//之后看你想要干嘛!
    }  
      

  4.   

    if (System.Web.HttpRuntime.Cache["TrafficCompan"]==null)//给缓存起名,并判断为null不,方括号里是名字
    {
    AccessDB objDB = new AccessDB();
    dv = objDB.GetDataView("wahStkTypeCompanyGet",null);取数据
    System.Web.HttpRuntime.Cache.Add("TrafficCompan",dv,null,DateTime.Now.AddSeconds(1200), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.High,null);  创建缓存,1200是设置时间,我这个是以秒为单位 合20分钟后自动消失
    }
    else 如果不为空就把就把缓存值给DataView
    {
    dv= (DataView)System.Web.HttpRuntime.Cache["TrafficCompan"];
    }
    ddlTrafficCompan.DataSource = dv;   把数据绑定到下拉框上
    ddlTrafficCompan.DataTextField = "ItemName";
    ddlTrafficCompan.DataValueField = "SeqNo";
    ddlTrafficCompan.DataBind();
      

  5.   

    DateTime.Now.AddSeconds  可以该的. now 后面能点出很多东西, 可以 分,  小时, 天, 月, 年