2010-08-10 10 views
1

J'écris une application qui a besoin de mettre continuellement à jour ses données affichées à partir d'une vue dans une base de données. Actuellement, il interroge périodiquement l'intégralité de l'ensemble de données et le réaffiche. Je change pour être plus efficace et je suis intéressé par les opinions des gens sur la façon de le faire le plus efficacement possible.Mise à jour continue des données dans l'application de la base de données

L'application est une application Windows Forms et utilise DataGridView pour afficher les données. Le serveur de base de données est SQL Server 2008.

J'ai lu sur les fonctionnalités de suivi des modifications SQL Server et je me demande si cela peut être pertinent? Quelqu'un peut-il suggérer de bonnes approches à prendre ici? J'en aurais besoin pour insérer, mettre à jour et supprimer des lignes dans l'application sans affecter l'état de la ligne sélectionnée ou la position des barres de défilement.

Merci!

+0

Quelle approche avez-vous fini par aller avec? –

Répondre

1

La méthode la plus simple consiste à interroger la colonne d'horodatage. Lorsque vous lancez votre application pour la première fois, elle interroge l'intégralité de l'ensemble de données et mémorise l'horodatage le plus important. Ensuite, il interrogera avec la requête where timestamp > @currentTimestamp et se souviendra de nouveau.

+0

Parfois, ces données sont également supprimées, ce qui suppose, je suppose, une table séparée avec les clés primaires des lignes supprimées à vérifier également. Je ne veux pas vraiment interroger continuellement la base de données; Je pense qu'il serait préférable d'avoir une notification dès que les données sont modifiées. Merci pour votre réponse si! –

+0

@George Xyzzy obtenir la notification est quelque chose qui ne provient pas de la base de données. vous devez utiliser une approche orientée service, soit avoir un bus de messages de services web/wcf. – Andrey

+0

Merci qui a du sens maintenant –

0

Si j'abordions ce problème, je regarderais en faire en tant que tel:

  1. Créer un projet de base de données SQL Server
  2. Ajouter un déclencheur au projet
  3. ont cette classe envoyer des notifications Regardez dans l'application intéressée ou
  4. Regardez dans l'enregistrement d'un gestionnaire d'événements avec cette classe SQL Server ... pas sûr de savoir comment ou si cela fonctionnerait, mais élever un événement à votre application à partir du déclencheur serait idéal

Je peux être plus précis si vous avez besoin, mais c'est l'approche générale

Information sur les déclencheurs dans les projets SQL Server: http://msdn.microsoft.com/en-us/library/938d9dz2.aspx

+0

Approche intéressante - donc vous dites qu'un déclencheur peut exécuter le code CLR à l'intérieur du SQL Server lui-même? Je vais devoir regarder dans ça, merci! –

+0

Quelques liens pour vous aider à démarrer: http://msdn.microsoft.com/en-us/library/ms254498%28VS.80%29.aspx (traite d'hébergement CLR géré dans SQL Server) http : //msdn.microsoft.com/en-us/library/6s0s2at1%28v=VS.80%29.aspx (Didacticiels et exemples de ce que vous pouvez faire avec le code CLR hébergé par SQL Server) http://richarddingwall.name/2008/09/29/sql-server-2008-database-projects-in-vsts-2008/ (Vous devrez l'installer pour les modèles de projet SQL Server 2008) HTH! –

+0

Notez également que l'intégration CLR est désactivée par défaut ...pour l'activer, lisez ici: http://msdn.microsoft.com/fr-fr/library/ms254506%28v=VS.80%29.aspx –

Questions connexes