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

本文关键字:更新 数据库 了解 应用程序 Web | 更新日期: 2023-09-27 17:58:06

我的web应用程序(ASP.NET 4)连接到数据库(SQL Server 2005)。对于某个表中插入的每一个新行,我希望web应用程序都能进行一些处理(比如向我发送一封包含新数据的电子邮件)。

如何实现该系统?我的第一个想法是让web应用程序检查表SN列,并有一个变量lastProcessedSN。并保持每分钟的投票。当插入新行时,是否可以让DB通知web应用程序?

请告知,谢谢。



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

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

您可以使用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调度任务,该任务将执行您创建的控制台应用程序。你的应用程序会从表中选择最新的行(基于时间戳,或者可能是你可以设置的标志)并通过电子邮件发送。

您可以为该表编写触发器,以便当新记录进入该表时,它可以调用一个点网组件。您可以在点网组件中拥有电子邮件发送代码

对于插入某张桌子,我想要网络应用程序可以做一些流程(如发送电子邮件至我的新数据)。

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

是否可以让DB通知web当有新行时应用插入?

窗口应用程序将使用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.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
                }
            }
        }
    }
}