J'affecte l'objet sqlliteconnection à une variable statique et l'initialise dans une fonction. En accédant à l'objet sqlliteconnection dans certains cas, il renvoie l'exception "sqlconnection object is dispos". À ma connaissance, les variables statiques ne sont éliminées que lorsque l'application se ferme.Pourquoi sqlliteconnection assignée à des variables statiques est-elle éliminée?
Exemple de code:
public static SQLLiteConnection sql;
public void OpenConnection()
{
sql = new SQLLiteConnection ;
//assign sql lite file path
sql.Open();
}
public void GetStud()
{
OpenConnection();
//writing sqlcommand connection
}
}
Merci pour la précieuse réponse. Puis-je savoir la raison pour laquelle statique connexion DB n'est pas la meilleure idée et que, comme je le sais, GC efface uniquement les objets inutilisés. Mais j'initialise sqlconnection chaque fois qu'il est utilisé alors comment GC peut le considérer comme un objet inutilisé. Ya je sais qu'il est bon d'utiliser l'utilisation de mots-clés. Mais je ne peux pas changer toute l'application dès maintenant. –
Quand c'est statique, les choses vont devenir très compliquées si vous y accédez par plus de threads. Les connexions sous-jacentes ont également des frais généraux. Et quand un autre objet non statique comme un lecteur de données fait référence à ce champ statique, GC peut ne pas collecter cette instance. Et là vient un nouveau niveau complet (difficulté de cauchemar) des problèmes que vous ne voulez pas traiter: D –