2009-06-23 8 views
0

J'ai deux applications, on met à jour une seule table qui a un nombre constant de lignes (128 lignes) en utilisant la méthode SqlDataAdapter.Update, et un autre application qui sélectionne périodiquement cette table à l'aide de SqlDataReader.Y at-il un problème lorsque j'appelle SqlAdapter.Update et en même temps appelez SqlDataReader.Read

parfois le DataReader ne renvoie que 127 lignes et non 128, et l'application de mise à jour ne supprime pas ou même n'insère aucune nouvelle ligne, elle met à jour simplement.

Je demande quelle est la cause de ce comportement?

Répondre

1

Oui, le lecteur de données requiert une connexion ouverte et ne tire pas toutes les lignes au moment de l'ouverture de la requête, ce qui vous permet d'extraire des données en temps réel du serveur. Cela ne ressemble pas au DataTable qui interroge et met toutes les informations dans un objet mis en cache (jeu d'enregistrements déconnecté).

+0

Donc, je peux résoudre le problème en utilisant SqlDataAdapter.Fill dans l'application de lecture au lieu d'utiliser la classe SqlDataReader ?? –

+0

Oui, ça devrait le faire. – kemiller2002

+0

Votre autre possibilité est de mettre un verrou sur la table, de parcourir tous les enregistrements avec le lecteur de données et de les placer dans des objets mémoire et de fermer la connexion quand ils sont terminés. – kemiller2002