100分求助一个SQLServer2005的查询通知的问题!!!

xiaosonl 2007-07-03 12:37:23
Global.asax:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
string connString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
System.Data.SqlClient.SqlDependency.Start(connString);
}

----------------------------------------------------------
public class Data
{
public Data()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

public List<string> GetData()
{
List<string> data = HttpRuntime.Cache["Data"] as List<string>;
if (data == null)
{
data = new List<string>();
LoadAndCache(data);
}

return data;
}

public void ReLoadData(string key, object item, CacheItemRemovedReason reason)
{
List<string> data = new List<string>();
LoadAndCache(data);
}

private void LoadAndCache(List<string> data)
{
string connString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
string sql = "SELECT UserUid, [Name], UserID, [Password] FROM dbo.[User]";
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);

conn.Open();
using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr.Read())
{
data.Add(dr.GetString(2));
}
}

//注册查询通知,方案一
SqlCacheDependency dep = new SqlCacheDependency(cmd);
HttpRuntime.Cache.Insert("Data", data, dep, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable,
new CacheItemRemovedCallback(ReLoadData));

//方案二
//SqlDependency dep2 = new SqlDependency(cmd);
//HttpRuntime.Cache.Insert("Data", data);
//dep2.OnChange += new OnChangeEventHandler(dep2_OnChange);

conn.Close();
data = HttpRuntime.Cache["Data"] as List<string>;
}

void dep2_OnChange(object sender, SqlNotificationEventArgs e)
{
List<string> data = new List<string>();
LoadAndCache(data);
}
}

源码如上,VS2005SP1+VS2005,只有当VS的Development停止的时候,才会引发ReLoadData方法,而User表的数据变化却并不会引发ReLoadData方法!
...全文
195 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq22345111 2010-08-23
  • 打赏
  • 举报
回复

xiaosonl



等 级:
结帖率:33.33%
Ijingjing 2010-08-23
  • 打赏
  • 举报
回复
那是必须的User表变了 当然不会引起查询 你应该换个方法 货思路
xiaosonl 2007-07-03
  • 打赏
  • 举报
回复
送分啊,没人要吗
xiaosonl 2007-07-03
  • 打赏
  • 举报
回复
跪求高手!!!
hydra_cc 2007-07-03
  • 打赏
  • 举报
回复
hai 不会 帮d
xiaosonl 2007-07-03
  • 打赏
  • 举报
回复
多谢帮顶!
shrekye 2007-07-03
  • 打赏
  • 举报
回复
帮忙顶
sendling 2007-07-03
  • 打赏
  • 举报
回复
我顶,呵呵,不会没有办法
xiaosonl 2007-07-03
  • 打赏
  • 举报
回复
自已顶一下,实在很急这个问题

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧