把读出来的数据放到session 里边,现判断如果存在这个session 就取session里边的数据 ,如果不存在读数据库里数据!

解决方案 »

  1.   

    一般缓存机制使用哈希结构实现的。不过你要考虑dataset的大小和使用频次了。
      

  2.   

    使用静态全局修饰就可以了(public static DataSet MyDs);如果是做网络程序的话,建议你不要使用,因为目前的DataSet存在一个BUG,
    就是多线程同时操作同一个DataSet的话,会出现索引损坏的情况,这个是MS的错,暂时没有解决的办法.
    做缓存的话,可以考虑使用LIST<>,不过不支持查询..但在.NET3.5里面就不一样了,有LINQ的帮助,你会发现做缓存策略是一件多么美好的
    事情.期待.NET 3.5正式出现吧.
      

  3.   

    Session["myDataSet"] = DataSet1;  //保留Dataset在缓存当中DataSet ds = (DataSet)Session["myDataSet"];
    if(ds == null || ds.Tables.Count ==0)
    {
        //TODO:读数据库;
    }
    else
    {
        //使用缓存中获得的ds;
    }
      

  4.   

    放在session里比较好
    楼上说的放在ViewState好象不行,viewState好像不能放矢量的东东,请教楼上有试吗?我的为什么不行呢
      

  5.   

    我感觉放在SESSION也不好,因为SESSION是有时间限制的,容易丢失
      

  6.   

    如果在一个页面的话VIEWSTATE是最好的,用过的,能保存可序列化的东东
      

  7.   

    最好不要缓存dataset,分数据存吧~
      

  8.   


            Application["ds"] = GetMyDataSet();        调用:DataSet ds=(DataSet)Application["ds"];