有谁用过.net的SqlDependency这个类吗
class Program
{
private static string _connStr;
static int i = 0;
static int maxid = 0;
static void Main(string[] args)
{
_connStr = "xxxx";
SqlDependency.Start(_connStr);//传入连接字符串,启动基于数据库的监听
UpdateGrid();
Console.Read();
}
private static void UpdateGrid()
{
using (SqlConnection connection = new SqlConnection(_connStr))
{
//依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[]
using (SqlCommand command = new SqlCommand("SELECT id FROM [dbo].[adv_CMD]", connection))
{
command.CommandType = CommandType.Text;
connection.Open();
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
SqlDataReader sdr = command.ExecuteReader();
Console.WriteLine();
while (sdr.Read())
{
int id = int.Parse(sdr["ID"].ToString());
if (maxid < id)
{
maxid = id;
}
Console.WriteLine("Id:{0} {1}", id,
(i++));
}
sdr.Close();
}
}
}
private static void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
using (SqlConnection connection = new SqlConnection(_connStr))
{
//依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[]
using (SqlCommand command = new SqlCommand("SELECT id FROM [dbo].[adv_CMD]", connection))
{
command.CommandType = CommandType.Text;
connection.Open();
SqlDataReader sdr = command.ExecuteReader();
Console.WriteLine();
while (sdr.Read())
{
Console.WriteLine("Id:{0} {1}", sdr["ID"].ToString(),
(i++));
}
sdr.Close();
}
}
}
}
程序在我第一次插入数据的时候,会得到通知,在第二次插入数据的时候,就没有 得到通知,是什么 原因,难道SqlDependency要重新注册一次?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
需要在dependency_OnChange方法connection.Open()与SqlDataReader sdr = command.ExecuteReader()之间插入SqlDependency dependency = new SqlDependency(command)和 dependency.OnChange += new OnChangeEventHandler(dependency_OnChange); 至于为什么需要再次依赖,我自己也不是很清楚欢迎交流
1003057289
@qq.com