2009-09-11 5 views
2

Je conçois un service Web dans ASP.NET et VS2008 et j'utilise des ensembles de données typés pour extraire des données de table. Ils fonctionnent bien et établissent leurs propres connexions via leurs objets TableAdapter associés. Edit: J'utilise VB, BTW!Meilleure façon d'établir une connexion pour une utilisation avec un objet de commande ADO.NET

Je tente maintenant d'exécuter une chaîne SQL personnalisée à l'aide d'un objet DataAdapter et d'un objet Command, mais je dois faire référence à un objet Connection pour que la commande fonctionne. Quelle est la meilleure façon de gérer cela? Dois-je:

a) Créer un objet de connexion globale à l'aide de Global.asax, en récupérant la chaîne de connexion depuis web.config? (Je l'ai déjà essayé, avec peu de succès)

b) Créer un objet de connexion de niveau classe en utilisant la méthode InitialiseComponent, en récupérant aussi ConnectionString depuis web.config?

c) Récupérer une connexion à partir de l'un des TableAdapters que j'ai déjà créés dans mes DataSets typés?

d) Quelque chose d'autre auquel je n'ai pas encore pensé?

BTW J'ai trouvé qu'il était très difficile d'extraire une ConnectionString de web.config, donc toute aide avec cela serait appréciée aussi!

Je ne suis pas totalement inexpérimenté avec ASP.NET, mais mon dernier gros projet utilisait VS2003, et je veux m'assurer que j'utilise correctement les outils actuels.

Répondre

3

Pour extraire la chaîne de connexion, utilisez

WebConfigurationManager.ConnectionStrings["name"].ConnectionString 

Il est préférable d'ouvrir et de fermer les connexions aussi près que possible de leur utilisation. ADO.NET fera la mise en commun de connexion afin que ce ne sera pas cher:

var connectionString = 
    WebConfigurationManager.ConnectionStrings["name"].ConnectionString; 
using (SqlConnection conn = new SqlConnection(connectionString)) 
{ 
    using (SqlCommand cmd = new SqlCommand("query", conn)) 
    { 
     conn.Open(); 

     // Use the command 
    } 
} 
+0

de OK, merci pour ce petit conseil - Je me demandais si un connexions globales étaient plus efficaces ou non. J'ai oublié de mentionner que j'utilise VB, mais je pense que je peux traduire! – Billious

1

Pour la connexion et les problèmes d'accès aux données, je vous conseille d'aller avec une sorte de Helpers données comme Microsoft Data Access Application Block

Here vous pouvez trouver un petit tutoriel sur la façon de l'utiliser.

Pour obtenir connectionstring de l'utilisation web.config méthodes folowing

public static string GetConnectionString(string strConstringKey) 
     { 
      return ConfigurationManager.ConnectionStrings[strConstringKey]; 
     } 

     public static bool GetConnectionString(string strConstringKey, ref string strConstring) 
     { 
      return (strConstring = ConfigurationManager.ConnectionStrings[strConstringKey]) == null ? false : true ; 
     } 
+0

Merci - votre syntaxe pour récupérer la chaîne de connexion s'est avérée être celle qui a fonctionné. Up-voté, puisque je ne peux pas accepter deux réponses! – Billious

+0

Aussi, je vérifie les liens que vous avez fournis - j'ai oublié de le mentionner. – Billious

+0

Vous êtes les bienvenus camarade ... Heureux d'aider :) – Mahin

Questions connexes