2009-06-16 7 views
0

J'ai une classe avec une méthode qui extrait des données d'une base de données via un processus stocké SELECT. Cette méthode utilise un SqlDbReader en renvoyant ExecuteReader() sur un SqlCommand.Utilisation d'une commande sqlconnection/sql via 2 méthodes liées à la base de données

La connexion et tout est fait dans cette méthode, avec des champs (tels que la chaîne de connexion) définis comme des champs de niveau classe.

J'ai maintenant besoin de remplir un tableau en fonction des résultats de cette requête (de sorte que les colonnes de chaque ligne iront dans le tableau avec son propre index). Cependant, cette requête ne sélectionnera pas toutes les données d'une table impliquée. Je peux écrire les requêtes pour obtenir ce dont j'ai besoin, mais comment puis-je utiliser une connexion tout au long de la classe? Si j'instancie l'objet de connexion et appelez Open() dans le constructeur, j'obtiens une exception à l'exécution.

J'espère quelque chose comme ceci:

// At class level: 
sqlconn.Open(); 
// sqlcommand set up 


Method() 
{ 
// Fire stored proc 
// Insert results in a collection 
} 

Method2() 
{ 
// Pass same collection in (use same one), 
// Add new row columns into same collection 
} 

Comment puis-je faire avec le strict respect à l'esprit?

Répondre

0

Une façon serait de passer votre objet de connexion autour de:

// At class level: sqlConn.Open(); // sqlcommand set up 

Method(sqlConn) { // Fire stored proc // Insert results in a collection } 

Method2(sqlConn); 
sqlConn.Close(); 

Le principe de base est d'ouvrir plus tard que vous le pouvez, et fermer le plus tôt possible. Vous pouvez même écrire une autre méthode qui ouvre la connexion, appelle toutes les méthodes qui l'utiliseront, puis la ferme.

+0

Cool. Je vais essayer. La méthode que vous décrivez fondamentalement fait tout mais appelle des méthodes qui déclenchent des procs stockés, ai-je raison? Pour des raisons techniques avec une API, je ne peux pas utiliser de paramètres, je ne serai donc pas en mesure de spécifier quelle (s) méthode (s) activer/désactiver. – dotnetdev

Questions connexes