2010-10-18 33 views
0

Je resultset ai sqldatareader peuplé avec cette commande:SQLDataReader ne met pas à jour son

string cmdlookup = String.Format("Select {0} from {1}", strSourceName, strSourceTable); 
    SqlCommand sqlcom = new SqlCommand(cmdlookup, con); 
SqlDataReader rdrsource = cmd.ExecuteReader(); 


      while (rdrsource.Read()) 
      { 


       this.lstSourceValues.Add(System.Convert.ToString(rdrsource[strSourceName])); 



      } 
      rdrsource.Close(); 

Il y a une fonction ailleurs dans le programme de modifier ce tableau. J'ai vérifié qu'il met effectivement à jour la table en question. La table a maintenant 11 valeurs.

Le résultat de cette requête ne change JAMAIS. Il renvoie toujours 5 lignes, même si une fonction ailleurs dans l'application a clairement mis à jour la table. Quelques lignes plus bas, je ferme aussi la connexion.

Est-ce que cette chose est cachée en quelque sorte? Pourquoi la requête ne se met-elle pas à jour?

Répondre

0

J'ai réussi à résoudre le problème. Le problème était que lorsque j'appelais .Close() et/ou .Dispose(), ce n'était pas vraiment se débarrasser de l'objet. Au lieu de cela, j'ai dû passer à l'aide d'une construction utilisant. Pour une raison quelconque, quand j'ai utilisé la construction using, elle a définitivement supprimé l'objet.

Il n'a pas changé parce que je recevais continuellement la même représentation en mémoire de l'objet.