En utilisant une connexion « centrale » est fortement déconseillée, car il se casse plusieurs modèles qui ADO.NET outils. Il est beaucoup plus facile d'utiliser une "chaîne de connexion centrale" à la place. Si vous voulez utiliser des paramètres dynamiques, vous pouvez regarder dans la classe "SqlConnectionStringBuilder".
ADO.NET est construit autour d'un modèle "acquier tard, libérer tôt" pour les connexions DB. Toute autre tentative causera tôt ou tard des problèmes massifs (faites moi confiance, voyez-le plusieurs fois: erreurs réseau/erreurs de transaction/erreurs de concurrence/erreurs de multithreading ...)
ADO.NET utilise un "pool de connexions" pour la connexion physique réelle à la base de données. Donc, à moins d'utiliser des chaînes de connexion différentes pour chaque connexion, vous devriez quand même vous retrouver avec une connexion. Mais puisque le "pool" gère celui-ci, il sera toujours dans un état propre quand il est (re) ouvert.
Personnellement, je préfère utiliser quelque chose comme ça pour mes chaînes de connexion:
internal static class DataSource
{
private static string _ConnectionString;
public static string ConnectionString
{
get
{
if (_ConnectionString == null)
_ConnectionString = FunctionToDynamicallyCreateConnectionstring();
return _ConnectionString;
}
}
private static string FunctionToDynamicallyCreateConnectionstring()
{
SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder();
// initialize cb's properties here...
return cb.ToString();
}
}
et plus tard
SqlConnection connection = new SqlConnection(DataSource.ConnectionString);
Ce modèle veillera à ce que la chaîne même connexion exacte est utilisé thorughout mon code et que le code dynamique ne s'exécute toujours qu'une fois.
[EDIT] Dans la plupart des cas, j'évite de coder l'intégralité de la chaîne de connexion dans le fichier app.config car certains paramètres peuvent être obligatoires pour mon code et ne devraient jamais être manipulés. Je crée des paramètres personnalisés pour les propriétés "serveur" ou "base de données" que j'ai lues et assignées à ConnectionStringBuilder ...
La meilleure pratique consiste généralement à avoir la chaîne de connexion dans un fichier .config. Ensuite, vous référencez la chaîne dans ce constructeur. – Renan
@Renan Merci pour le commentaire, vient avec cette pratique également la possibilité d'avoir une connexion variable? Fondamentalement, je voudrais lui faire lire des informations (comme l'utilisateur, catalogue intial, mot de passe) pour SqlConnection de textBoxes. –
Vous pouvez avoir plusieurs chaînes de connexion nommées dans un fichier. Ensuite, vous utilisez une certaine logique dans votre code pour choisir le plus approprié. Alors oui, vous pouvez modifier les chaînes que vous utilisez. – Renan