Bonjour !

J'ai implémenté pour mon application un Singleton de connexion à la base de données. Il fonctionnait apparemment bien, mais récemment je me suis aperçu qu'il produisait des erreurs. En gros, lorsque l'on clique sur un lien et que, pendant le chargement de la page, on clique sur un autre lien, j'ai parfois (pas systématiquement donc) une erreur qui me dit que, en gros, il y a déjà un DataReader d'ouvert et qu'il faut le fermer avant d'en ouvrir un autre.

J'ai juste suivi les différents tutos qui expliquent comment faire un Singleton en C#, mon code n'a rien de spécial. J'ai juste ajouté deux fonction statiques pour gérer l'ouverture et la fermeture de la connexion.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
//Ferme la connexion
private static void CloseConnexion()
{
  if (GetInstance().SqlConnection.State != ConnectionState.Closed)
    GetInstance().SqlConnection.Close();
}
 
//Ouvre la connexion
private static void OpenConnexion()
{
  CloseConnexion();
  GetInstance().SqlConnection.Open();
}
Je suppose donc que ma fonction Close ne ferme pas systématiquement le Datareader ouvert (vu qu'il ne peut y en avoir qu'un seul par objet sqlconnection), mais je ne vois pas vraiment comment régler le problème.

Si quelqu'un a une idée...

Merci !