Je voudrais utiliser les notifications SQL Server pour capturer les événements d'insertion dans ma base de données dans une application WinForms. J'essaie d'utiliser l'objet SQLDependency. Les articles MSDN font que cela semble assez simple. J'ai donc créé un petit exemple d'application pour essayer. L'événement ne semble déclencher que lorsque j'entre dans mon application la première fois (MessageBox apparaît). L'insertion de données dans la table n'augmente pas l'événement OnChange. Quelqu'un peut-il me dire ce que je manque? Merci!Notifications SQL Server - Mon OnChange ne se déclenche pas
public Main()
{
InitializeComponent();
var check = EnoughPermission();
SqlDependency.Stop(constr);
SqlDependency.Start(constr);
if(connection == null)
{
connection = new SqlConnection(constr);
}
if(command == null)
{
command = new SqlCommand("Select ID, ChatMessage FROM dbo.Chat",connection);
}
connection.Open();
command.Notification = null;
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
command.ExecuteReader();
}
private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
MessageBox.Show("Change!");
}
Où insérez-vous des données? Une instruction SELECT n'est pas un INSERT. –
J'insère les données dans un analyseur de requête. Bon appel sur l'INSERT n'étant pas un SELECT :) La sélection est nécessaire pour indiquer à la base de données les données que vous regardez pour les notifications. – Nick
Notez que je passe ce SELECT à l'objet SqlDendency .. – Nick