Web应用程序以了解数据库更新
我的Web应用程序(ASP.NET 4)连接到数据库(SQL Server 2005)。 对于插入某个表中的每个新行,我希望Web应用程序可以执行某些过程(例如使用新数据向我发送电子邮件)。
我该如何实施该系统? 我的第一个是使用web应用检查表SN列,并有一个变量lastProcessedSN
。 并且每分钟都要继续投票。 当插入新行时,是否可以让DB通知Web应用程序?
请指教,谢谢。
编辑:发送电子邮件只是一个例子,而不是我想要做的事情。 所以这个问题集中在如何在MSSQL表插入上实现触发器来调用我的程序。
你可以使用SqlDependency查看
http://www.codeproject.com/KB/database/chatter.aspx
&
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx
您可以修改插入脚本或存储过程以向自己发送电子邮件。 如果您使用SQL编写存储过程,则可以从那里发送电子邮件:从SQL发送电子邮件
否则,如果您正在使用EF / NHibernate / Linq2SQL,您可以编写C#代码给自己发送电子邮件
可能最简单的方法是设置一个每隔X分钟运行一次的Windows计划任务,该任务将执行您创建的控制台应用程序。 您的应用程序将从表中选择最新的行(基于时间戳,或者可能是您可以设置的标志)并通过电子邮件发送它们。
您可以为该表编写一个触发器,以便当新记录到达表时,它可以调用点网组件。您可以让您的点网组件中的电子邮件发送代码
对于插入某个表中的每个新行,我希望Web应用程序可以执行某些过程(例如使用新数据向我发送电子邮件)。
对于这个实现,根据我的知识,你应该使用窗口应用程序。
当插入新行时,是否可以让DB通知Web应用程序?
Window应用程序将使用System.Windows.Forms.Timer 。 以下是示例代码。
System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer(); myTimer.Tick += new EventHandler(TimerEventProcessor); myTimer.Interval = Mention the time interval in milliseconds; myTimer.Start();
定时器也可以跟随。
System.Threading.Timer
System.Timers.Timer
有关选择计时器的更多信息,请访问此链接
System.Windows.Forms.Timer与System.Threading.Timer与System.Timers.Timer
private void TimerEventProcessor(Object myObject, EventArgs myEventArgs) { { using (System.Data.SqlClient.SqlConnection con = new SqlConnection("YourConnection string")) { con.Open(); using (SqlCommand cmd = new SqlCommand()) { string expression = "Parameter value"; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "Your Stored Procedure"; cmd.Parameters.Add("Your Parameter Name", SqlDbType.VarChar).Value = expression; cmd.Connection = con; using (IDataReader dr = cmd.ExecuteReader()) { if (dr.Read()) { //Your functionality } } } } }