使用sqlCacheDependency

 第一步
  修改web,config
  <!--定义数据库连接-->
  <connectionStrings>
   <add name="NorthwindConnectionString" connectionString="Server=USERRYR/DB;Database=Northwind;UID=sa;pwd=密码" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <system.web>
   <!-- 定义缓存策略-->
   <caching>
   <sqlCacheDependency enabled="true" pollTime="10000">
   <databases>
   <!--
   name:必需的 String 属性。
   要添加到配置集合中的 SqlCacheDependencyDatabase 对象的名称。
   此名称用作 @ OutputCache 指令上 SqlDependency 属性的一部分。
   pollTime:设置 SqlCacheDependency 轮询数据库表以查看是否发生更改的频率(以毫秒计算)。这儿是一个测试,所以设为10秒,请加大此值
   -->
   <add connectionStringName="NorthwindConnectionString" name="Categories"/>
   </databases>
   </sqlCacheDependency>
   </caching>
  </system.web>
  第二步.定义cachedData测试类
  using System;
  using System.Data;
  using System.Configuration;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using System.Web.UI.HtmlControls;
  using System.Web.Caching;
  using System.Data.SqlClient;
  /// <summary>
  /// Summary description for CachedData
  /// </summary>
  public class CachedData
  {
   private string Key;
   private string _Source;
   /// <summary>
   /// 指示数据从哪儿读取的
   /// </summary>
   public string Source { get { return _Source; } }
  public CachedData()
  {
   Key = "Categories";
   _Source = "未知";
  }
   //读取数据
   public DataView getFromCache() {
   if (HttpRuntime.Cache[Key] == null)
   {
   //取数据
   SqlConnection conn = new SqlConnection();
   conn.ConnectionString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
   SqlCommand comm = new SqlCommand("SELECT [CategoryID], [CategoryName], [Description] FROM [Categories]", conn);
   SqlDataAdapter sda = new SqlDataAdapter(comm);
   DataSet ds = new DataSet();
   conn.Open();
   sda.Fill(ds);
   DataView dv = ds.Tables[0].DefaultView;
   conn.Close();
   //启用更改通知
   SqlCacheDependencyAdmin.EnableNotifications(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
   //连接到 SQL Server 数据库并为 SqlCacheDependency 更改通知准备数据库表
   SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString, "Categories");
   //制定缓存策略
   SqlCacheDependency scd = new SqlCacheDependency("Categories", "Categories");
   //插入缓存
   HttpRuntime.Cache.Insert(Key, dv, scd);
   _Source = "Database";
   return dv;
   }
   else {
   //从缓存中取值
   _Source = "cache";
   return (DataView)HttpRuntime.Cache[Key];
  
   }
   }
  }
  3.测试页面
  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
   <title>Untitled Page</title>
  </head>
  <body>
   <form id="form1" runat="server">
   <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
   <asp:DataGrid runat="server" ID="Repeater1"></asp:DataGrid>&nbsp;
   </form>
  </body>
  </html>
  其对应cs文件
  using System;
  using System.Data;
  using System.Data.SqlClient;
  using System.Configuration;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using System.Web.UI.HtmlControls;
  public partial class _Default : System.Web.UI.Page
  {
   protected void Page_Load(object sender, EventArgs e)
   {
  
   BindRepeater1();
  
   }
   private void BindRepeater1(){
   CachedData cd=new CachedData();
   this.Repeater1.DataSource = cd.getFromCache();
   this.Repeater1.DataBind();
   this.Label1.Text = cd.Source;
   }
  }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值