简单数据缓存类(c#)

原创 2006年07月13日 15:26:00

using System;

using System.Data;

using System.Data.SqlClient;

using System.Threading;

 

namespace WJ.Lib.Base

{

     /// <summary>

     /// DateBuffer 的摘要说明。

     /// </summary>

     public class DateBuffer

     {

        int mGetDateType;

        object mobjBuffer;

        string mSql;

        SqlCommand mSqlCom;

        DateTime mFlagDT;

        int mBufferTime;

        Thread m_Thread;

 

        DataTable mdtBuffer;

 

        public DateBuffer()

        {

            mBufferTime = 2;

        }

 

        public DateBuffer(SqlCommand sSqlCom)

        {

            mBufferTime = 2;

            mSqlCom = sSqlCom;

            //从存储过程中获取数据

            mGetDateType = 2;

        }

 

 

        public DateBuffer(string sSql)

        {

            mBufferTime = 2;

            Sql = sSql;

            //从查询语句中获取数据

            mGetDateType = 1;

        }

 

        /// <summary>

        /// 设置缓存时间(分钟)

        /// </summary>

        public int BufferTime

        {

            set

            {

                mBufferTime = value;

            }

        }

 

 

        /// <summary>

        /// 获取缓存数据

        /// </summary>

        public DataTable Buffer

        {

            get

            {

                CheckDate(true);

                return mdtBuffer;

            }

        }

 

        /// <summary>

        /// 设置数据查询存储过程

        /// </summary>

        public SqlCommand SqlCom

        {

            set

            {

                if (mdtBuffer == null)

                {

                    mdtBuffer = new DataTable();

                }

                mSqlCom = value;

                //从存储过程中获取数据

                mGetDateType = 2;

                CheckDate(false);

            }

            get

            {

                return mSqlCom;

            }

        }

 

        /// <summary>

        /// 设置数据查询SQL

        /// </summary>

        public string Sql

        {

            set

            {

                if (mdtBuffer == null)

                {

                    mdtBuffer = new DataTable();

                }

                mSql = value;

                //从查询语句中获取数据

                mGetDateType = 1;

                CheckDate(false);

            }

            get

            {

                return mSql;

            }

        }

 

        /// <summary>

        /// 保持数据更新

        /// </summary>

        void CheckDate(bool CheckTime)

        {

            try

            {

                if (!CheckTime)

                {

                    //需要立即更新数据

                    UpdateDate();

                }

                else if (mFlagDT < DateTime.Now)

                {

                    //更新数据时间超时,采用线程更新数据

                    if(m_Thread == null

                        || (m_Thread.ThreadState != System.Threading.ThreadState.Running

                        && m_Thread.ThreadState != System.Threading.ThreadState.WaitSleepJoin ))

                    {

                        m_Thread = new Thread(new ThreadStart(UpdateDate));

                        m_Thread.Start();

                    }

                }

            }

            catch

            {

            }

        }

 

        void UpdateDate()

        {

            DataTable dt = null;

            try

            {

                if (mGetDateType == 1)

                {

                   //通过查询语句获取表数据

                    dt = GetDateTable(mSql);

                }

                else if(mGetDateType == 2)

                {

                   //通过存储过程获取表数据

                    dt =GetDateTable(ref mSqlCom);

                }

                mFlagDT = DateTime.Now.AddMinutes(mBufferTime);

            }

            catch

            {

            }

            finally

            {

                if (dt != null)

                {

                    mdtBuffer = dt;

                }

            }

        }

 

 

     }

}

 

C#数据缓存介绍及Caching通用帮助类整理

C#缓存主要是为了提高数据的读取速度。因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高程序的性能,以下为工...
  • fuyifang
  • fuyifang
  • 2014年10月26日 21:48
  • 3391

WinForm使用的缓存类

namespace HZ {     using System.Collections.Generic;     /**////      /// 全局统一的缓存类     ///  ...
  • everlasting51
  • everlasting51
  • 2014年01月24日 17:03
  • 1512

缓存技术,封装好的缓存类

using System; using System.Collections.Generic; using System.Linq; using System.Web; using EnYuan.BS...
  • lybwwp
  • lybwwp
  • 2014年01月14日 08:59
  • 3062

C#缓存介绍 Caching通用帮助类代码整理 .net几种缓存概述

Cache的概述及用法和帮助类,cache与session,cookie的区别,cache帮助类
  • sz1103
  • sz1103
  • 2016年12月30日 14:04
  • 5572

C# Cache缓存读取设置

背景:easyui加载缓慢而且一个页面还要请求好几个方法,于是想到缓存,因为之前用的是Redis,准备用继续Redis缓存某些小table的数据(主外键之类的),无奈不知道外网地址,问老大,曰:用Ca...
  • nnn_net
  • nnn_net
  • 2016年11月29日 16:46
  • 7059

.Net——缓存机制(一):利用Dictionary模拟缓存

在计算机的硬件设计中,有一个被反复使用的思想——缓存。同样,在软件设计中,这个思想也可以用来解决数据读取非常耗时带来的性能问题(当然,在时间和空间上,我们要寻找一个平衡点)。      首先来看理...
  • lhc2207221755
  • lhc2207221755
  • 2015年05月14日 22:18
  • 1702

设计一个字节数组缓存类

版权所有,转载须注明出处!1、为什么要在做网络通信的时候,经常需要用到:读:就是我们需要从网络流里面读取字节数据,并且由于分包的原因,我们需要自己缓存这些数据,而不是读完立刻丢掉。写:我们需要把各种类...
  • kakashi8841
  • kakashi8841
  • 2014年12月19日 11:31
  • 4787

关于使用C#编写一个简单的日志类

最近在项目中编写的log类,在博客上记录一下。 在调用的时候会按照当前时间自动生成对应的日志文件。代码如下: using System; using System.Collections.Gene...
  • carlblack1987
  • carlblack1987
  • 2017年03月24日 16:32
  • 237

一个不错的PHP缓存类介绍和PHP缓存函数介绍以及使用

缓存在实际使用当中应用很广泛,可以减轻对服务器数据库的访问,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。下面是一个写得不错的缓存类,可以参考下缓存的机制与写法。...
  • u011986449
  • u011986449
  • 2014年04月07日 22:51
  • 3635

缓存功能工具类

Android开发中会造成一定的缓存,如与服务器之间进行通信,就必然需要从服务端获取数据,在/data/data/com.xxx.xxx/cache文件夹下生产缓存。在开发中可能需要获取缓存,或清除缓...
  • u013408979
  • u013408979
  • 2016年08月24日 13:53
  • 319
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单数据缓存类(c#)
举报原因:
原因补充:

(最多只允许输入30个字)