.net4缓存笔记

本文介绍了一个基于HR系统的TmallMan报表页面实现细节。该页面通过查询数据库获取产品信息,并利用缓存来提高数据加载效率。具体实现包括从两个数据源中获取产品ID和名称,进行去重并分组,最后将结果缓存起来。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HR.BusinessLogic.Control;
using HR.BusinessLogic.Report;
using BMSP.DBAccesser.DBScript;
using System.Runtime.Caching;
using HR.Model.Customer;
using System.Data;

namespace HR.UI.Reports
{
    public partial class TmallMan : SysBasePage
    {
        public List<string> tps = new List<string>();
        public string BeginDate = DateTime.Now.ToString("yyyy-01-01");
        public string EndDate = DateTime.Now.ToString("yyyy-01-31");
        public string NowDate = DateTime.Now.AddMonths(-1).ToString("yyyyMM");

        protected void Page_Load(object sender, EventArgs e)
        {
            top1.mRoleId = SysUser.ROLE_ID;
            TmallAction vAction = new TmallAction();
            tps = vAction.GetTypes();
            ObjectCache oc = MemoryCache.Default;
            if (!oc.Contains("products"))
            {
                List<ProductModel> list = new List<ProductModel>();
                DBManager vDBManager = new DBManager();
                vDBManager.ConnectionOpen();
                try
                {
                    string sql = @"SELECT PRODUCTID,PRODUCTNAME 
                        FROM (select PRODUCTID,PRODUCTNAME from XXX GROUP BY PRODUCTID,PRODUCTNAME
                        UNION ALL 
                        select PRODUCTID,PRODUCTNAME from XXX GROUP BY PRODUCTID,PRODUCTNAME) v 
                        GROUP BY PRODUCTID,PRODUCTNAME";
                    DataTable dt = vDBManager.Query(sql).Tables[0];
                    int num = 0;
                    if (dt != null) 
                    {
                        num = dt.Rows.Count;
                        foreach (DataRow dr in dt.Rows) 
                        {
                            ProductModel vModel = new ProductModel();
                            vModel.ProductId = dr["PRODUCTID"].ToString();
                            vModel.ProductName = dr["PRODUCTNAME"].ToString();
                            list.Add(vModel);
                        }
                        dt.Dispose();
                    }
                    string isql = "insert into cache_log (ldate,luser,lnum) values (sysdate,:luser,:lnum)";
                    vDBManager.AddParameter(":luser", SysUser.USER_ID);
                    vDBManager.AddParameter(":lnum", num);
                    vDBManager.ExecuteSql(isql);
                }
                catch (Exception ex)
                {

                }
                finally 
                {
                    vDBManager.ConnectionClose();
                }
                CacheItemPolicy cp = new CacheItemPolicy();
                oc.Set("products", list, cp);
            }
        }
    }
}

 

转载于:https://www.cnblogs.com/wpcnblog/p/6090096.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值