想实现以下功能:
当数据库中某个表有数据插入的时候,执行后台方法中的代码,
于是使用SQLDependency来实现!
本想数据插入才触发的,没想到不插入数据也总是触发!
贴代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;namespace ConsoleApplication1
{
class Class2
{
private static SqlConnection con = null;
private static SqlCommand com = null; static void Main(string[] args)
{
string constr = "Data Source=.;Initial Catalog=mailmoniter;Persist Security Info=True;User ID=xxx;Password=xxxxxxxx";
SqlDependency.Start(constr);
con = new SqlConnection(constr);
com = new SqlCommand("SELECT [id],[EmailAccount],[Info],[NowTime] FROM [Mail].[dbo].[_auxUser]", 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} | {1}", dr[0],dr[1]);
}
dr.Close();
Console.WriteLine();
}
catch(Exception e)
{
Console.WriteLine();
}
}
}}
代码不长,请高手帮忙看看!控制台输入总是不断刷新,但是并没有插入或修改数据!
当数据库中某个表有数据插入的时候,执行后台方法中的代码,
于是使用SQLDependency来实现!
本想数据插入才触发的,没想到不插入数据也总是触发!
贴代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;namespace ConsoleApplication1
{
class Class2
{
private static SqlConnection con = null;
private static SqlCommand com = null; static void Main(string[] args)
{
string constr = "Data Source=.;Initial Catalog=mailmoniter;Persist Security Info=True;User ID=xxx;Password=xxxxxxxx";
SqlDependency.Start(constr);
con = new SqlConnection(constr);
com = new SqlCommand("SELECT [id],[EmailAccount],[Info],[NowTime] FROM [Mail].[dbo].[_auxUser]", 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} | {1}", dr[0],dr[1]);
}
dr.Close();
Console.WriteLine();
}
catch(Exception e)
{
Console.WriteLine();
}
}
}}
代码不长,请高手帮忙看看!控制台输入总是不断刷新,但是并没有插入或修改数据!
ALTER DATABASE xxx SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE xxx SET ENABLE_BROKER;
SqlDependency.Start(constr);
con = new SqlConnection(constr);
com = new SqlCommand("SELECT [id],[EmailAccount],[Info],[NowTime] FROM [Mail].[dbo].[_auxUser]", con);
OutputData(); //问题在这里吧!
Console.ReadLine();
SqlDependency.Stop(constr);