Web应用程序了解数据库更新
本文关键字:更新 数据库 了解 应用程序 Web | 更新日期: 2023-09-27 17:58:06
我的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调度任务,该任务将执行您创建的控制台应用程序。你的应用程序会从表中选择最新的行(基于时间戳,或者可能是你可以设置的标志)并通过电子邮件发送。
您可以为该表编写触发器,以便当新记录进入该表时,它可以调用一个点网组件。您可以在点网组件中拥有电子邮件发送代码
对于插入某张桌子,我想要网络应用程序可以做一些流程(如发送电子邮件至我的新数据)。
对于这个实现,据我所知,您应该使用窗口应用程序。
是否可以让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
}
}
}
}
}