sqlDependency的onChange事件触发时,总是提示通知事件原因为Invalid

kingkwang 2009-02-01 02:49:02
private void Form1_Load(object sender, EventArgs e)//初始化sqlDependency,开始监听
{
dep.OnChange += new OnChangeEventHandler(dep_OnChange);
SqlDependency.Start(conn.ConnectionString);
ListStudent();
}

private void dep_OnChange(object sender, SqlNotificationEventArgs e)
//监听方法,每一次启动时总是提示e.Info为Invalid.(无法通知)
e也就是SqlNotificationInfo

{
DialogResult dR;
dR = MessageBox.Show("The data has changed. Refresh?",e.Info.ToString(),MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if (dR == DialogResult.Yes)
{
this.Invoke(new PopulateList(ListStudent));
}
}

private void ListStudent()//读取数据
{
productListBox.Items.Clear();
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
productListBox.Items.Add(reader["name"].ToString() + ":" + reader["sex"].ToString());
}
conn.Close();
}


是否是要在sqlserver中启用相应的sql语句,才支持sqlDependenCy类?
...全文
501 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
周公 2009-02-01
  • 打赏
  • 举报
回复
查询通知只支持某些 Transact-SQL 语句。

首先,要支持通知,查询中不得包含下列内容:

派生的表。

行集函数。

UNION 运算符。

子查询。

外联接或自联接。

TOP 子句。

DISTINCT 关键字。

COUNT(*) 聚合函数。

AVG、MAX、MIN、STDEV、STDEVP、VAR 或 VARP 聚合函数。

用户定义的聚合函数。

引用可空表达式的 SUM 函数。

完全文本谓词 CONTAINS 或 FREETEXT。

COMPUTE 或 COMPUTE BY 子句。

聚合表达式(如果在选择列表中未指定 GROUP BY)。如果指定了 GROUP BY,选择列表中必须包含 COUNT_BIG(*) 表达式,并且不能指定 HAVING、CUBE 或 ROLLUP。

INTO 子句。

将阻止结果更改的条件(例如 WHERE 1=0)。

FOR BROWSE(或在 SET NO_BROWSETABLE ON 的情况下运行)。

READPAST 锁定提示。

其次,查询不得引用下列内容:

临时表或表变量。

其他数据库或服务器中的表或视图。

所有其他视图或表值函数。

任何系统表或视图。

任何非确定性函数,包括评级和窗口函数。

任何服务器全局变量

任何服务中介程序队列。
周公 2009-02-01
  • 打赏
  • 举报
回复
查询通知是 Microsoft SQL Server 2005 中以及 ADO.NET 2.0 的 System.Data.SqlClient 命名空间中提供的一项新功能。查询通知建立在 SQL Server 2005 中引入的服务中介程序基础结构的基础上,使应用程序在数据更改时可以接收通知。如果应用程序提供数据库中信息的缓存(例如 Web 应用程序),需要在源数据更改时接收通知,此功能特别有用。

通过三种方式可以使用 ADO.NET 实现查询通知:

低级实现通过 SqlNotificationRequest 类提供,该类公开服务器端功能,使您可以利用通知请求执行命令。

高级实现通过 SqlDependency 类提供,该类提供在源应用程序和 SQL Server 之间的通知功能的高级抽象,使您可以使用相关性来检测服务器中的更改。大多数情况下,这是托管客户端应用程序通过 SQL Server .NET Framework 数据提供程序利用 SQL Server 2005 通知功能的最简单、最有效的方式。

此外,使用 ASP.NET 2.0 构建的 Web 应用程序可以使用 SqlCacheDependency 帮助器类。

如果应用程序需要通过刷新显示或缓存(例如在 DataGrid 控件或网页中)来响应基础数据中的更改,查询通知非常有用。Microsoft SQL Server 2005 允许 .NET Framework 应用程序向 SQL Server 发送命令,如果执行相同命令生成的结果集与最初检索到的结果集不同,请求生成通知。
周公 2009-02-01
  • 打赏
  • 举报
回复
OnChange 在关联命令的结果更改时发生。如果您没有使用 OnChange,可检查 HasChanges 属性以确定查询结果是否已更改。
OnChange 事件不一定意味着数据发生了更改。在其他情况下,如超时时间已过和设置通知请求失败,也会生成 OnChange
leonwan 2009-02-01
  • 打赏
  • 举报
回复
up
sxmonsy 2009-02-01
  • 打赏
  • 举报
回复
http://www.cnblogs.com/Xrinehart/archive/2006/07/27/461106.html
你看看这个对你有帮助吗?
yeah920 2009-02-01
  • 打赏
  • 举报
回复
不会,帮顶.
源码下载地址: https://pan.quark.cn/s/8d2c461c797c JavaWeb程序设计构成了掌握Web交互式应用程序开发的核心领域,对于初学者来说,精通这一技术具有决定性意义。在“JavaWeb程序设计(第三版)作业答案”中,我们可以预期获得针对该教材习题的一系列深入解析,从而协助学习者强化知识体系。 JavaWeb所包含的技术组件涵盖了Servlet、JSP(JavaServer Pages)、JDBC(Java Database Connectivity)以及各类框架如Spring MVC、Struts等。Servlet是Java平台提供的一种扩展服务器功能的接口,能够处理HTTP请求并生成相应的反馈。JSP则是一种用于构建动态网页的工具,它支持开发者将HTML代码与Java代码进行整合编写,从而简化了Web应用程序的开发流程。 作业答案通常会涉及以下几个核心内容: 1. **Servlet基础**:可能包含Servlet生命周期、init(), service(), destroy()方法的应用,以及如何在web.xml文件中设定Servlet的映射关系。 2. **JSP基础**:JSP的九大内置对象,如request、response、session、application等的使用,以及EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)的实际操作。 3. **HTTP协议理解**:GET和POST请求方法的差异,请求头与响应头的应用,以及会话管理的概念阐释。 4. **JDBC数据库操作**:与数据库建立连接,执行SQL指令,处理查询结果集,以及...
源码链接: https://pan.quark.cn/s/a4b39357ea24 斐讯K2是一款广受用户青睐的无线路由器,其运行表现稳定且具备较高的可操作性,在DIY爱好者群体中拥有极高的声誉。本资料将系统性地阐述斐讯K2的固件刷机方法及其关联的技术要点。固件升级是路由器爱好者改善设备性能、扩展功能的一种普遍手段,经由替换出厂固件,能够达成更加个性化的网络配置、增强安全防护等目标。斐讯K2固件资源库涵盖了多种知名的非官方固件,诸如Tomato Pheonix 不死鸟、高恪、PandoraBox 潘多拉等,这些固件均具备独特的优势,能够适配不同用户的需求。 1. Tomato Pheonix 不死鸟:Tomato是一款立足于Linux的开源固件,以其精巧、高效而备受推崇。不死鸟版本是专门为华硕及斐讯路由器优化的分支,提供了卓越的QoS(服务质量)配置、详尽的图表监控以及便捷的固件升级途径。对于那些需要精准调控带宽和监测网络状态的用户而言,这是一个理想的选项。 2. 高恪:高恪固件是OpenWrt的定制化版本,着重于操作的便捷性和运行的可靠性,特别适合对路由器操作不甚熟悉的用户群体。它提供了一些实用的功能,例如内置的广告屏蔽、快速测速工具等,同保留了OpenWrt的适应性。 3. PandoraBox 潘多拉:潘多拉盒是另一款基于OpenWrt的固件,它以丰富的插件库和强大的自定义潜力而闻名。用户能够依据个人需求安装各类插件,实现更多功能,如远程接入、DDNS(动态域名解析服务)等。 4. 官方固件的纯净版本与定制版本:官方固件通常更侧重于稳定性,纯净版意味着未预置额外的应用或服务,适合注重稳定性的用户。定制版则可能包含了制造商的特色功能或优...

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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