Веб-приложение, чтобы узнать обновление базы данных - PullRequest
5 голосов
/ 02 июня 2011

Мое веб-приложение (ASP.NET 4) подключается к базе данных (SQL Server 2005). Для каждой новой строки, вставленной в определенную таблицу, я хочу, чтобы веб-приложение могло выполнять определенный процесс (например, отправлять мне электронное письмо с новыми данными).

Как мне внедрить систему? Во-первых, веб-приложение проверяет столбец SN таблицы и имеет переменную lastProcessedSN. И продолжай опрашивать каждую минуту. Возможно ли, чтобы БД уведомляла веб-приложение, когда вставляется новая строка?

Пожалуйста, сообщите, спасибо.



РЕДАКТИРОВАТЬ: Отправка электронного письма - это просто пример, а не то, что я хочу сделать. Поэтому этот вопрос посвящен тому, как реализовать триггер на вставке таблицы MSSQL для вызова моей программы.

Ответы [ 5 ]

2 голосов
/ 02 июня 2011
2 голосов
/ 02 июня 2011

Вероятно, самый простой подход - это настроить запланированное задание Windows, которое будет запускаться каждые X минут и запускать консольное приложение, которое вы создаете. Ваше приложение выберет самые новые строки из таблицы (на основе отметки времени или, возможно, установленного вами флага) и отправит их по электронной почте.

2 голосов
/ 02 июня 2011

Вы можете изменить скрипт вставки или хранимую процедуру, чтобы отправить себе электронное письмо.Если вы пишете с помощью хранимых процедур в SQL, вы можете отправлять электронную почту оттуда: Отправлять электронную почту из SQL

В противном случае, если вы используете EF / NHibernate / Linq2SQL, вы можете написать код C # длянапишите себе

1 голос
/ 02 июня 2011

Вы можете написать триггер для этой таблицы, чтобы при появлении новой записи в таблице она могла вызывать сборку dot net. У вас может быть код отправки электронной почты в сборке dot net.

0 голосов
/ 02 июня 2011

Для каждой новой строки, вставленной в определенная таблица, я хочу веб-приложение может сделать какой-то процесс (например, отправить по электронной почте я с новыми данными).

Для этой реализации, насколько мне известно, вы должны использовать оконное приложение.

Возможно ли, чтобы БД уведомляла веб приложение, когда есть новая строка вставить?

Окно приложения будет использовать 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
                }
            }
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...