最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#緩存之SqlCacheDependency用法實例總結(jié)

 更新時間:2014年08月12日 15:56:35   投稿:shichen2014  
這篇文章主要介紹了C#緩存之SqlCacheDependency用法,在C#程序設計中有一定的實用價值,需要的朋友可以參考下

本文整理匯總了C#緩存的數(shù)據(jù)庫依賴類SqlCacheDependency的使用方法,具體內(nèi)容如下:

1、數(shù)據(jù)庫依賴類SqlCacheDependency

數(shù)據(jù)庫緩存依賴主要解決的是當數(shù)據(jù)庫的內(nèi)容發(fā)生改變時,如何及時通知緩存,并更新緩存中的數(shù)據(jù)的問題。

語法定義:

SqlCacheDependency類主要的構(gòu)造函數(shù)如下:

public SqlCacheDependency(string database,string table)

其中參數(shù)一代表要啟用緩存的數(shù)據(jù)庫,參數(shù)二表示緩存的表。在實際使用過程中,只需要指明緩存的數(shù)據(jù)庫和表即可。

方法是屬性的應用(代碼與CacheDependency類似),不過Sql需要先進行一下對web.config進行配置和設置數(shù)據(jù)庫的緩存配置一下才可以使用SqlCacheDependency緩存類

首先web.config配置如下:

<!--連接數(shù)據(jù)庫語句-->
 
<configuration>
 <connectionStrings>
  <add name="Config" connectionString="Data Source=.;Initial Catalog=CacheData;Persist Security Info=True;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>
 </connectionStrings>
 
<!--在system.web節(jié)點下添加-->
<!--注意事項:配置中add name值為數(shù)據(jù)庫名,connectionStringName為連接數(shù)據(jù)庫字段的名稱要相同-->
 
<caching>
<sqlCacheDependency enabled="true" pollTime="1000">

<databases>
 <add name="CacheData" connectionStringName="Config" pollTime="1000"/>
</databases>
</sqlCacheDependency>

</caching>

2、Vs緩存配置:

 打開“開始”|“所有程序”|“Microsoft Visual Studio 2010”|“Visual Studio Tools”|“Visual Studio 2010命名提示”菜單命令。

 在命令框內(nèi)輸入:aspnet_regsql.exe -S  SqlServer服務器  -U <Username> -P <Password> -ed -d 數(shù)據(jù)庫名稱 -et -t 表名

  若無身份驗證輸入:aspnet_regsql.exe -S  SqlServer服務器  -ed -d 數(shù)據(jù)庫名稱 -et -t 表名

 執(zhí)行命令即可;

3、頁面代碼;

private static SqlCacheDependency MyDep;
    protected void Page_Load(object sender, EventArgs e)
    {
      Label1.Text = DateTime.Now.ToString();
      if (!IsPostBack)
      {
        //Cache為數(shù)據(jù)庫名,T_SqlCache為緩存表
        
        DataSet ds = GetSet();
        if (Cache["SqlCon"] == null)
        {
          //添加緩存SqlCon,緩存值為數(shù)據(jù)庫表內(nèi)容,
          MyDep = new SqlCacheDependency("Cache", "T_SqlCache");
          Cache.Add("SqlCon", ds, MyDep, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.Normal, null);
        } 
        
      }
    }
     
    protected void Button1_Click(object sender, EventArgs e)
    {
      if (MyDep.HasChanged)
      {//當數(shù)據(jù)庫值更改時提醒;
        Response.Write("數(shù)據(jù)庫修改時間為:"+MyDep.UtcLastModified);
      }
      if (Cache["SqlCon"] == null)
      {//當緩存過期或數(shù)據(jù)庫值修改后緩存從新加載
        MyDep = new SqlCacheDependency("Ajax", "T_AjaxLD");
        DataSet ds = GetSet();
        Cache.Add("SqlCon", ds, MyDep, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.Normal, null);
      }
      this.GridView1.DataSource = Cache["SqlCon"];//綁定數(shù)據(jù)
      this.GridView1.DataBind();
    }
    /// <summary>
    /// 生成Dataset
    /// </summary>
    /// <returns></returns>
    private DataSet GetSet()
    {
      DataSet ds = new DataSet();
      string sql = "select * from T_SqlCache";
      string Config = ConfigurationManager.ConnectionStrings["Config"].ConnectionString;//連接數(shù)據(jù)庫語句
      using (SqlConnection cnn = new SqlConnection(Config))
      {
        using (SqlCommand cmm = new SqlCommand(sql, cnn))
        {
          SqlDataAdapter dapter = new SqlDataAdapter(cmm);
          dapter.Fill(ds);
        }
      }
 
      return ds;
    }

C#緩存基本內(nèi)容就差不多這些,一些應用需要在實踐中總結(jié)出來,此處順便分析一下session和Cache的區(qū)別:

Session和Cache的區(qū)別:

以前實現(xiàn)數(shù)據(jù)的緩存有很多種方法,有客戶端的Cookie,有服務器端的Session和Application。其中Cookie是保存在客戶端的一組數(shù)據(jù),主要用來保存用戶名等個人信息。Session則保存對話信息。Application則是保存在整個應用程序范圍內(nèi)的信息,相當于全局變量。通常使用最頻繁的是Session,那么Session和Cache又有什么區(qū)別呢?

本節(jié)結(jié)合使用經(jīng)驗,詳細介紹Session緩存和Cache緩存的區(qū)別如下:

(1)最大的區(qū)別是Cache提供緩存依賴來更新數(shù)據(jù),而Session只能依靠定義的緩存時間來判斷緩存數(shù)據(jù)是否有效。

(2)即使應用程序終止,只要Cache.Add方法中定義的緩存時間未過期,下次開啟應用程序時,緩存的數(shù)據(jù)依然存在。而Session緩存只是存在于一次會話中,會話結(jié)束后,數(shù)據(jù)也就失效了。

(3)Session容易丟失,導致數(shù)據(jù)的不確定性,而Cache不會出現(xiàn)這種情況。

(4)由于Session是每次會話就被加載,所以不適宜存放大量信息,否則會導致服務器的性能降低。而Cache則主要用來保存大容量信息,如數(shù)據(jù)庫中的多個表。

(5)VS2005的測試版提供了將緩存保存在硬盤上的參數(shù),但正式版中取消了這個功能,估計其在以后版本中會重新實現(xiàn)。而Session目前只能保存在內(nèi)存中,對其性能有影響。

此外,需要特別注意:為了提高Cache的有效利用率,建議對于不經(jīng)常改動的數(shù)據(jù)使用Cache。

相關(guān)文章

  • C#中各種計時器用法小結(jié)

    C#中各種計時器用法小結(jié)

    這篇文章主要介紹了C#中各種計時器用法,結(jié)合實例形式總結(jié)分析了C#中各種常用時間相關(guān)類實現(xiàn)計時器功能的操作技巧,需要的朋友可以參考下
    2017-06-06
  • C#繪制中國國旗的方法

    C#繪制中國國旗的方法

    這篇文章主要介紹了C#繪制中國國旗的方法,以實例形式較為詳細的分析了C#圖形繪制的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • unity實現(xiàn)翻頁按鈕功能

    unity實現(xiàn)翻頁按鈕功能

    這篇文章主要為大家詳細介紹了unity實現(xiàn)翻頁按鈕功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#中的timer與線程使用

    C#中的timer與線程使用

    這篇文章主要介紹了C#中的timer與線程使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • C#中的矩形數(shù)組(多維數(shù)組)和鋸齒數(shù)組的實現(xiàn)

    C#中的矩形數(shù)組(多維數(shù)組)和鋸齒數(shù)組的實現(xiàn)

    本文主要介紹了C#中的矩形數(shù)組(多維數(shù)組)和鋸齒數(shù)組的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • C#中Serializable序列化實例詳解

    C#中Serializable序列化實例詳解

    這篇文章主要介紹了C#中Serializable序列化,以實例形式詳細講述了系列化的技術(shù)及各種序列化方法,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • C#使用Process類調(diào)用外部程序分解

    C#使用Process類調(diào)用外部程序分解

    這篇文章主要介紹了C#使用Process類調(diào)用外部程序分解,分別介紹了啟動外部程序、關(guān)掉外部程序、關(guān)掉后調(diào)用一些方法的方法,需要的朋友可以參考下
    2014-07-07
  • java 文件下載支持中文名稱的實例

    java 文件下載支持中文名稱的實例

    下面小編就為大家分享一篇java 文件下載支持中文名稱的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • WinForm實現(xiàn)仿視頻播放器左下角滾動新聞效果的方法

    WinForm實現(xiàn)仿視頻播放器左下角滾動新聞效果的方法

    這篇文章主要介紹了WinForm實現(xiàn)仿視頻播放器左下角滾動新聞效果的方法,涉及WinForm窗口滾動字幕設置的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • Unity實現(xiàn)簡單手勢識別

    Unity實現(xiàn)簡單手勢識別

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)簡單手勢識別,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論

三台县| 疏附县| 西安市| 沙湾县| 长子县| 新龙县| 墨江| 汕头市| 吴桥县| 望都县| 临海市| 龙南县| 东丰县| 岳阳县| 蒙阴县| 宁乡县| 徐州市| 武功县| 始兴县| 白玉县| 嘉禾县| 根河市| 福建省| 拉萨市| 健康| 阿拉善右旗| 西平县| 东乌珠穆沁旗| 当涂县| 滦南县| 江城| 区。| 开封市| 福州市| 南华县| 河池市| 永济市| 马边| 江阴市| 景德镇市| 尚志市|