关于ASP.NET缓存与数据库中的数据表关联查询
2011-12-19 17:17
253 查看
我们可以在ASP.NET使用缓存技术,例如数据库中表RoleInfo,如果该表没有发生变化(这里包括修改,删除,添加),则网页读取内存中的缓存项,显示到界面上。如果对表进行了操作,则自动移除缓存项,直接连接数据库查询数据并显示到界面上。我简单的演示一下,抛砖引玉吧!
原理是:首先通知数据库中的一张表(例如RoleInfo)生成一张缓存表并且自动生成触发器。当RoleInfo发生修改时,触发触发器,数据库中的缓存表会发生变化,缓存会自动移除。
我的页面有个按钮,按钮的作用是添加缓存依赖。还有个数据控件,用来显示数据。代码如下
protected void Button1_Click(object sender, EventArgs e) { //如果没有缓存 if (Page.Cache["key"]==null) { //自定义的数据操作类 DALProvider dal = new DALProvider(); //创建数据集 这里可能有点多此一举哈。。 dal.CreateDataSet("RoleInfo"); DataSet ds = dal.ProviderData; //根据连接字符串和表名通知该数据库的表实行缓存依赖通知 //EnableTableForNotifications是静态方法,有两个重载方法 //第一个参数为数据库的连接字符串,第二个参数为缓存所依赖的数据库表名 SqlCacheDependencyAdmin.EnableTableForNotifications(dal.ConStr, "RoleInfo"); //通过web配置文件读取ZitOCS需要的连接字符串,并指明数据集中与缓存依赖的表 //第一个参数为web节点指定链接字符串,第二个参数为数据集中与缓存依赖的DataTable SqlCacheDependency sqlCache = new SqlCacheDependency("ZitOCS","RoleInfo"); //插入缓存。第一个参数为缓存名称,第二个为数据源,第三个为依赖实例 Page.Cache.Insert("key", ds, sqlCache); } }
web.config中需要配置节点
<?xml version="1.0"?> <configuration> <appSettings/> <connectionStrings> <add name="ZitOCSConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ZitOCS.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <caching> <sqlCacheDependency enabled="true" pollTime="10000"> <databases> <add name="ZitOCS" connectionStringName="ZitOCSConnectionString"/> </databases> </sqlCacheDependency> </caching>
//sqlCacheDependency节点的属性 enabled表示开启缓存 pollTime表示每隔一段时间向数据库轮询,一旦有了变化就移除缓存项
读取缓存就非常简单了,把代码贴出来
protected void ReadFromSource() { if (Cache["key"]==null) { DALProvider dal = new DALProvider(); dal.CreateDataSet("RoleInfo"); DataSet ds = dal.ProviderData; this.GridView1.DataSource = ds; this.GridView1.DataBind(); } else { DataSet ds = (DataSet)Cache["key"]; this.GridView1.DataSource = ds; this.GridView1.DataBind(); } }
//一个数据提供类 public class DALProvider { private DataSet ds = new DataSet(); private readonly string conStr = ConfigurationManager.ConnectionStrings["ZitOCSConnectionString"].ConnectionString; public string ConStr { get { return conStr; } } private readonly string sqlStr; public DataSet ProviderData { get { if (ds.Tables.Count==0) { return null; } return ds; } } //默认查询字符串 public DALProvider() { this.sqlStr = "select * from RoleInfo"; } //自定义查询字符串 public DALProvider(string sqlStr) { this.sqlStr = sqlStr; } //创建数据集 public void CreateDataSet(string TableName) { SqlDataAdapter da = new SqlDataAdapter(sqlStr, conStr); da.Fill(ds, TableName); } }
最后在网页加载的时候调用ReadFromSource() 方法即可,我就不多解释了。好了,基本就这样了功能算是实现了
相关文章推荐
- 关于“Asp.net 中后台CS读取数据库数据生成数组传递给前台页面JS使用”
- ASP.NET关于对excel数据导入到数据库
- 关于asp.net网站发布后,使用登录控件和注册控件时出现“数据库只读,无法进行数据更新”的解决方法
- Asp.net ajax 使用CascadingDropDown以数据库数据建立三级联下拉框
- 【Asp.net】关于数据库的应用
- 从数据库导出数据到word、excel、.txt _asp.net技巧
- Asp.Net MVC 视图(显示数据库数据表格) - Part.3
- ASP.NET 2.0数据缓存功能小例
- 我用ASP.NET缓存之数据缓存
- ASP.NET MVC 4用ADO.NET实体数据模型连接数据库
- asp.net 关于Repeater数据控件实用
- asp.net实现 EXCEL数据导入到数据库功能
- 关于asp.net中两个DropDownList之间数据库调用传递选项
- ASP.NET 2.0数据缓存功能简介
- ASP.NET缓存 Cache之数据缓存
- 应用Jquery在asp.net中实现输入提示,数据来自数据库
- ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(二)
- asp.net CheckBox从数据库读取数据设定是否选中 并更新
- 关于ASP.NET 将数据导出成Excel 的总结[中]
- asp.net(c#)如何读取上传过程中的.txt文件中的数据,并将其写入数据库的