SqlServer通知与SqlDependency类使用示例
2009-04-10 14:59
375 查看
整个程序如下所示:感觉SqlDependcy有点怪,不是很清楚其设计原理。
1. 启用broker并有相应的权限
2. 调用的顺序要注意。
3. 能够使用的SQL语句有一定限制,具体见参考手册
4. 在获取数据中,每次通知到来的时候都要再注册通知提示(就这点不清楚),不然在执行查询时会出现“查询通知订阅消息无效。”错误(不知识这错误是怎么来的,而且非调试状态下不同出现!(也就是说没反应 ~~):
SqlDependency depend = new SqlDependency(com);
depend.OnChange += new OnChangeEventHandler(depend_OnChange);
这两行代码要每次获取数据时调用!
class Program { private static SqlConnection con=null; private static SqlCommand com=null; static void Main(string[] args) { string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; SqlDependency.Start(constr); con = new SqlConnection(constr); com=new SqlCommand("select Uname from dbo.usertb", con); OutputData(); Console.ReadLine(); SqlDependency.Stop(constr); } static void depend_OnChange(object sender, SqlNotificationEventArgs e) { OutputData(); } private static void OutputData() { com.Notification = null; SqlDependency depend = new SqlDependency(com); depend.OnChange += new OnChangeEventHandler(depend_OnChange); try { con.Open(); SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection); while (dr.Read()) { Console.WriteLine("{0}", dr[0]); } dr.Close(); Console.WriteLine(); } finally { if (con.State != ConnectionState.Closed) con.Close(); } } }这里有几个关键点:
1. 启用broker并有相应的权限
2. 调用的顺序要注意。
3. 能够使用的SQL语句有一定限制,具体见参考手册
4. 在获取数据中,每次通知到来的时候都要再注册通知提示(就这点不清楚),不然在执行查询时会出现“查询通知订阅消息无效。”错误(不知识这错误是怎么来的,而且非调试状态下不同出现!(也就是说没反应 ~~):
SqlDependency depend = new SqlDependency(com);
depend.OnChange += new OnChangeEventHandler(depend_OnChange);
这两行代码要每次获取数据时调用!
相关文章推荐
- SqlCacheDependency使用查询(命令)通知使缓存无效
- 在SqlServer中如何使用Sql语句将一张表的数据复制到另一张表
- 使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名
- 使用子查询进行编号重排的处理示例.sql
- SqlServer开启CLR使用(C#)DLL实现实时Socket通知
- LINQ To SQL 枚举支持示例,使用鉴别器列(Discriminator Column)和继承映射(翻的)
- Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
- 应用程序对Sqlserver进行SQL查询使用与不使用参数对执行计划的影响
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- SQLSERVER 存储过程中动态SQL的使用
- 如何使用sql查询数据库表结构的设计(sqlserver,oracle)
- 如何使用sql查询数据库表结构的设计(sqlserver,oracle)
- SQLServer实战经验分享--ServiceBroker安全配置和使用示例
- mssql函数DATENAME使用示例讲解(取得当前年月日/一年中第几天SQL语句)
- SQL脚本积累之四-----if...else...使用示例
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
- 使用编号表生成流水号的示例.sql
- 使用sql语句创建和删除约束示例代码
- Oracle PL/SQL之函数索引(Function-based indexes)使用示例