C# Web应用程序了解数据库更新

C# Web应用程序了解数据库更新,c#,asp.net,sql-server-2005,C#,Asp.net,Sql Server 2005,我的web应用程序ASP.NET 4连接到数据库SQL Server 2005。对于插入到某个表中的每一新行,我希望web应用程序可以执行一些过程,例如向我发送一封包含新数据的电子邮件 如何实施该系统?我的第一个想法是让web应用检查table SN列,并使用变量lastProcessedSN。每分钟都要进行投票。插入新行时是否可以让DB通知web app 请告知,谢谢 编辑: 发送电子邮件只是一个例子,而不是我想做的事情。因此,这个问题的重点是如何在MSSQL表insert上实现触发器以调用

我的web应用程序ASP.NET 4连接到数据库SQL Server 2005。对于插入到某个表中的每一新行,我希望web应用程序可以执行一些过程,例如向我发送一封包含新数据的电子邮件

如何实施该系统?我的第一个想法是让web应用检查table SN列,并使用变量lastProcessedSN。每分钟都要进行投票。插入新行时是否可以让DB通知web app

请告知,谢谢

编辑:
发送电子邮件只是一个例子,而不是我想做的事情。因此,这个问题的重点是如何在MSSQL表insert上实现触发器以调用我的程序。

您可以修改insert脚本或存储过程以向自己发送电子邮件。如果您使用SQL中的存储过程进行编写,则可以从那里发送电子邮件:


否则,如果您使用EF/NHibernate/Linq2SQL,您可以编写C代码给自己发送电子邮件

您可以为该表编写触发器,以便在新记录到达该表时,它可以调用.net程序集。您可以在您的.net程序集中设置电子邮件发送代码

最简单的方法可能是设置一个Windows计划任务,该任务每X分钟运行一次,以执行您创建的控制台应用程序。您的应用程序将根据时间戳从表中选择最新的行,或者您可以设置一个标志并通过电子邮件发送它们

对于在中插入的每一新行 某些表格,我希望web应用程序可以 执行一些流程,例如向发送电子邮件 给我提供新的数据

对于这个实现,据我所知,您应该使用窗口应用程序

是否可以让DB通知web 当有新行正在运行时应用程序 插入

窗口应用程序将使用。下面是示例代码

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();
计时器也可以跟随

系统线程计时器

系统计时器

有关计时器选择的更多信息,请点击此链接


您可以使用SqlDependency的see

&


这也是我书中最好的方法。找到了另一个解决方案-SqlNotificationRequest。
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
                }
            }
        }
    }

}