none
Event aus DB abfeuern, wenn ein Datensatz hinzugefügt wird RRS feed

  • Allgemeine Diskussion

  • Hallo,

    wir planen für unsere Software eine kleines Nachrichtensystem einzubauen, mit dem User miteinandere kommunizieren können. Das würden wir gerne über eine DB Tabelle lösen und da die Nachrichten speichern.

    Beim Prüfen, ob neue Nachrichten da sind, wird es aber etwas komplizierter. Der User bewegt sich auf der Hauptübersicht, auf der auch die Benachrichtigung bei neuen Nachrichten erscheinen soll. Jetzt könnten wir natürlich bei jeden Klick auf der Hauptübersicht in der DB nachschauen, ob neue nachrichten da sind, aber das scheint eher suboptimal zu sein.

    Ideal wäre, wenn die DB ein Event abfeuert, wenn sich in der Tabelle etwas ändert. Gibt es sowas, wo mal eine Art Überwachung auf eine Tabelle legen kann?

    vielen Dank.


    Vielen Dank und Gruß Martin

    Donnerstag, 14. Februar 2013 16:12

Alle Antworten

  • Hallo Martin,

    schau dazu mal hier:

      http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqldependency.aspx

    Beachte aber die Hinweise und weiterführenden Links.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 14. Februar 2013 16:16
    Moderator
  • Hallo,

    danke für den Hinweis.

    Nach ca 6 Std. basteln muss ich aber trotzdem feststellen, dass es nicht klappt. Hier mein bisheriger Code:

            privat void dependency_OnChange(object sender, SqlNotificationEventArgs e)
            {
                MessageBox.Show("Hat sich was geändert");
            }
    
            private void toolStripButton2_Click(object sender, EventArgs e)
            {
                SqlDependency.Start(dbConnection.ConnectionString);
                connNachrichten = new SqlConnection(dbConnection.ConnectionString);
                connNachrichten.Open();
                cmdNachrichten = new SqlCommand("SELECT Message FROM dbo.SYS_MessageService", connNachrichten);
                cmdNachrichten.Notification = null;
                SqlDependency dependency = new SqlDependency(cmdNachrichten);
                dependency.OnChange += dependency_OnChange;
            }

    Der Code läuft ohne Fehler durch, aber das Event wird nicht abgefeuert, sobald ich einen Datensatz hinzufüge.

    Was mache ich falsch?


    Vielen Dank und Gruß Martin

    Freitag, 15. Februar 2013 15:09