我的Web应用程序(ASP.NET 4)连接到数据库(SQL Server 2005)。对于在某个表中插入的每个新行,我希望Web应用程序可以执行某些过程(例如使用新数据向我发送电子邮件)。
如何实施系统?我的第一个是使用Web应用程序检查表SN列,并有一个变量lastProcessedSN
。并且每分钟都要继续投票。当插入新行时,是否可以让DB通知Web应用程序?
请指教,谢谢。
编辑:
发送电子邮件只是一个例子,而不是我想做的事情。所以这个问题集中在如何在MSSQL表插入上实现触发器来调用我的程序。
答案 0 :(得分:2)
您可以修改插入脚本或存储过程以向自己发送电子邮件。如果您使用SQL编写存储过程,则可以从那里发送电子邮件:Send Email from SQL
否则,如果您使用EF / NHibernate / Linq2SQL,您可以编写C#代码给自己发送电子邮件
答案 1 :(得分:2)
最简单的方法可能是设置一个每隔X分钟运行一次的Windows计划任务,该任务将执行您创建的控制台应用程序。您的应用程序将从表中选择最新的行(基于时间戳,或者可能是您可以设置的标志)并通过电子邮件发送它们。
答案 2 :(得分:2)
您可以使用SqlDependency查看
http://www.codeproject.com/KB/database/chatter.aspx
&安培;
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx
答案 3 :(得分:1)
您可以为该表编写一个触发器,以便当新记录到达表时,它可以调用点网组件。您可以让您的点网组件中的电子邮件发送代码
答案 4 :(得分:0)
对于插入的每个新行 某些表,我想要的网络应用程序可以 做一些过程(比如发送电子邮件到 我有新数据)。
对于这个实现,根据我的知识,你应该使用窗口应用程序。
是否可以让数据库通知网络 应用程序,当有一个新行 插入
窗口应用程序将使用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 vs. System.Threading.Timer vs. 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
}
}
}
}
}