使用ASP.NET Cache 的 CacheDependency 來偵測資料庫是否變更
小弟前陣子在討論區看到此篇文章...經過測試後有小小心得..分享給大家呀...
首先準備下列檔案:
CacheDependencyDataAdd.aspx,CacheDependencyDataAdd.aspx.cs→做資料更新網頁
CacheDependencyDemo.aspx,CacheDependencyDemo.aspx.cs→做資料瀏覽網頁
CheckChange.txt→檢查資料是否有更改的文字檔(內容空的)
--------------------------------------------------------------------------------------------------------------------------------
CacheDependencyDemo.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CacheDependencyDemo.aspx.cs" Inherits="CacheDependencyDemo" %>
<!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>CacheDependencyDemo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
<!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>CacheDependencyDemo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
CacheDependencyDemo.aspx.cs




































//取得資料













CacheDependencyDataAdd.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CacheDependencyDataAdd.aspx.cs" Inherits="CacheDependencyDataAdd" %>
<!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>CacheDependencyDataAdd</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
DataSourceID="SqlDataSource1" OnRowUpdated="GridView1_RowUpdated">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
SortExpression="id" />
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
<asp:BoundField DataField="tel" HeaderText="tel" SortExpression="tel" />
<asp:BoundField DataField="gender" HeaderText="gender" SortExpression="gender" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [user]" UpdateCommand="UPDATE [user] SET name = @name, tel = @tel, gender = @gender WHERE (id = @id)">
<UpdateParameters>
<asp:Parameter Name="name" />
<asp:Parameter Name="tel" />
<asp:Parameter Name="gender" />
</UpdateParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
<!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>CacheDependencyDataAdd</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
DataSourceID="SqlDataSource1" OnRowUpdated="GridView1_RowUpdated">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
SortExpression="id" />
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
<asp:BoundField DataField="tel" HeaderText="tel" SortExpression="tel" />
<asp:BoundField DataField="gender" HeaderText="gender" SortExpression="gender" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [user]" UpdateCommand="UPDATE [user] SET name = @name, tel = @tel, gender = @gender WHERE (id = @id)">
<UpdateParameters>
<asp:Parameter Name="name" />
<asp:Parameter Name="tel" />
<asp:Parameter Name="gender" />
</UpdateParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
CacheDependencyDataAdd.aspx.cs




























執行如果:
CacheDependencyDemo
CacheDependencyDataAdd
參考網址:
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080402082116KNJ&fumcde=FUM20041006161839LRJ
http://aspnet.4guysfromrolla.com/articles/121802-1.aspx