powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Уведомление о запросе с помощью SqlDependency (sql server 2008 R2)
1 сообщений из 1, страница 1 из 1
Уведомление о запросе с помощью SqlDependency (sql server 2008 R2)
    #37696703
Nabuhiko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне необходимо обновлять данные на форме у клиентов если изменяются данные в таблице. Проблема в том, что уведомление срабатывает только первый раз при вставке/удалении/изменении данных, при следующем запросе к бд метод обработки уведомления не вызывается. В чем может быть проблема?

код (строка соединения рабочая)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ConsNotific
{
    class Program
    {
        
        static void Main(string[] args)
        {
            Program p =new Program();
            p.GetData();
        }

             public void GetData()
    {
        SqlConnection connection = new SqlConnection(@"workstation id=mybasedata.mssql.somee.com;packet size=4096;user id=adm;pwd=admin369;data source=mybasedata.mssql.somee.com;persist security info=False;initial catalog=mybasedata");
      
          SqlCommand cmd = new SqlCommand("SELECT tab.id, tab.name, tab.kol FROM dbo.tab", connection);
          cmd.Notification = null;
        // создаем объект SqlDependency, и регистрируем его в SqlCommand
        //
          SqlDependency depend = new SqlDependency(cmd);
        SqlDependency.Start(connection.ConnectionString);
        // подписываем обработчик события на оповещение об изменениях в 
        // результатах запроса, выполненного через SqlCommand
        depend.OnChange += new OnChangeEventHandler(OnDataChange);

        connection.Open();
        SqlDataReader rdr = cmd.ExecuteReader();
        while (rdr.Read())
          Console.WriteLine(rdr[0] + "\t" + rdr[2] + "\t" + rdr[1]);
        rdr.Close();
     connection.Close();

      Console.WriteLine("Press Enter to continue");
      Console.ReadLine();
    }

    /// <summary>
    /// Обработчик события изменения данных на сервере в запрошенном наборе.
    /// </summary>
    public void OnDataChange(object sender, SqlNotificationEventArgs e)
    {
      Console.WriteLine(String.Format(
        "{0}Result has changed{0}Source {1}{0}Type {2}{0}Info {3}{0}",
        Environment.NewLine, e.Source, e.Type, e.Info));


      // Если не случилось ошибки, то обработчик надо зарегистрировать заново
      // и получить новый набор данных.
      if (e.Info != SqlNotificationInfo.Invalid)
          GetData();
      else
          Console.WriteLine("The query is invalid for notification");
    }
    }
}



скриншот работы программы в прикрепленном файле
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Уведомление о запросе с помощью SqlDependency (sql server 2008 R2)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]