2010-07-13 1 views
1

J'ai un serveur multithread qui utilise un MSSQL auquel chaque client devrait avoir accès. Je voulais utiliser la mise en commun aussi j'utilise cette connexion:Déclaration de la connexion DB dans un espace statique - le pool de connexions va-t-il être conservé?

public static void DBconn() 
     { 
       SqlConnection pripojeni = new SqlConnection(); 
       pripojeni.ConnectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=XYZ;Trusted_Connection=True;Min Pool Size=20"; 

     } 

Est-ce que l'objet persistera dans la mémoire (et non l'objet lui-même plutôt que les connexions ouvertes) si les chaînes de connexion indique « min piscine »? Ou sera-t-il parti après avoir terminé cette méthode? Merci

Répondre

5

Vous devez utiliser un nouvel objet SqlConnection pour chaque connexion, ne pas en créer un dans le constructeur statique. Connection Pooling fonctionne lorsque chaque connexion que vous créez utilise la même chaîne de connexion (vous devez la stocker dans un fichier de configuration tel que web.config ou app.config).

Il suffit de créer et d'ouvrir un objet SqlConnection à chaque fois, n'oubliez pas de le fermer/éliminer à la fin, et le regroupement de connexions garantira qu'il réutilise les connexions ouvertes existantes.

Espérons que ça aide!

+0

Aucun constructeur n'est impliqué dans l'exemple de code OP (vous pouvez le voir à partir du mot-clé 'public'). –

0

Puisque vous avez récemment déclaré l'objet SqlConnection dans cette méthode, il sera supprimé après la fin de la méthode.

essayer pour une connexion continue:

public static class PerstistendDB 
    { 
     // Readonly so it can't be destroyed! 
     public static readonly System.Data.SqlClient.SqlConnection pripojeni = new System.Data.SqlClient.SqlConnection(
      "Data Source=localhost\\SQLEXPRESS;Initial Catalog=XYZ;Trusted_Connection=True;Min Pool Size=20"); 
    } 

Note: Je suis d'accord avec Kieren, si vous gardez votre connexion ouverte à tout moment, vous bouchent la base de données, il est (presque toujours) beaucoup mieux d'ouvrir et ferme chaque fois.

+0

Mais jusqu'ici j'ai éprouvé peu de "retards" quand la nouvelle connexion est établie :( – Thomas

+0

La connexion de connexion gardera des connexions ouvertes de toute façon, mais en utilisant un objet SqlConnection dans une application multithread ne fonctionnera pas j'ai peur –

+0

Salut Tomas, des moyens de regroupement de connexion –

Questions connexes