2015-09-24 2 views
1

J'ai fait face à un problème de problème de connexion SQL. Le problème est que j'ai un code comme celui-ciComment utiliser la connexion Sql dans une autre connexion?

function1() 
{ 
    using (sqlconnection sc = new sqlconnection()) 
    { 
     foo(); 
    } 
} 

foo is a function like below: 
foo() 
{ 
    using (sqlconnection sc = new sqlconnection()) 
    { 
     dosomething; 
    } 
} 

Il semble que la connexion sql dans foo() ne peut pas fonctionner. Je me demande si c'est une bonne idée de passer la sqlconnection dans foo comme foo (sc), ou est-ce une bonne idée de prendre foo en dehors de function1, ou est-ce qu'il y a de quoi permettre la sqlconnection dans foo?

+0

Sans plus de détails, nous ne pouvons pas vraiment dire. Est-ce qu'ils essaient de se connecter au même serveur? Pourquoi avez-vous besoin de la connexion dans 'function1' si tout ce qu'il fait est d'appeler une autre méthode? – sab669

+1

Une connexion est une session. Les sessions sont séparées. En substance, si vous utilisez une commande sql, vous l'attachez à une connexion. Dans une connexion, vous ne pouvez utiliser qu'un seul lecteur sql, sauf si vous activez mars. Ensembles de résultats multiples Bref, ce que vous essayez devrait fonctionner, sinon il y a un problème différent. Vous devriez montrer plus de code et de vraies erreurs ou exceptions. –

Répondre

3

Pas besoin de cela, ont votre fonction foo pour accepte un paramètre de connexion et utiliser la même instance de connexion dans les deux endroits comme ci-dessous

function1() 
{ 
    using (sqlconnection sc = new sqlconnection()) 
    { 
     foo(sc); 
    } 
} 

foo is a function like below: 

foo(sqlconnection scc) 
{ 
    sqlconnection sc = scc 
    dosomething; 
} 
+0

semble une bonne idée, sc à l'intérieur de foo affecter sc à l'intérieur de la fonction1? Comme c'est une connexion, je ne sais pas s'il s'agit d'une "copie" de sc à l'intérieur de la fonction1 comme d'autres objets "virtuels". – litaoshen

+1

@litaoshen, Oui, car il s'agit d'un type de référence et non d'un type de valeur mais la seule idée est d'utiliser le même objet de connexion au lieu d'en avoir plusieurs. Vous pouvez utiliser le même objet con et avoir un objet de commande différent ou identique à celui-ci. – Rahul

+0

OK, je vois. Je vous remercie! – litaoshen