web-dev-qa-db-fra.com

Obtenir la chaîne de connexion de Web.config dans asp.net

Je veux savoir comment obtenir la chaîne de connexion du fichier web.config dans asp.net.

Je ne connais que la manière ci-dessous.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

    namespace Sherserve.DataAccessLayer
    {
        public class DBGateway
        {
            public static string conString;

            public DBGateway()
            {
                conString = ConfigurationManager.ConnectionStrings["test"].ToString();
            }
        }
    }
27
Ammar Asjad

Utiliser le ConfigurationManager.ConnectionStrings est à peu près la seule façon appropriée. Pour l'utiliser correctement avec le contrôle de l'intégrité, vous pouvez avoir un tel code:

public DBGateway()
{
    ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings["test"];
    if (mySetting == null || string.IsNullOrEmpty(mySetting.ConnectionString))
        throw new Exception("Fatal error: missing connecting string in web.config file");
    conString = mySetting.ConnectionString;
}

Cela générera une erreur utile au cas où la chaîne de connexion est manquante, à la place de l'erreur cryptique "objet NULL".

Il est à noter que la classe ConnectionStringSettings redéfinit la méthode ToString():

public override string ToString()
{
    return this.ConnectionString;
}

Cela signifie donc que l'utilisation de ConfigurationManager.ConnectionStrings["test"].ToString() est identique à celle de ConfigurationManager.ConnectionStrings["test"].ConnectionString, mais vous feriez mieux de procéder à un contrôle de cohérence et, personnellement, il semble plus propre d'utiliser la propriété réelle et de ne pas dépendre de la classe pour le lui donner.

40
Shadow Wizard

Voici la solution complète: -

string constring = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
SqlConnection con = new SqlConnection(constring);
DataSet ds = new DataSet();
try
 {
   SqlDataAdapter dataAdapter = new SqlDataAdapter(query, con);
   SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
   con.Open();
   dataAdapter.Fill(ds, "table");
   return ds;
 }
 catch (Exception ex)
  {
  }
    finally
    {
        if (con.State == System.Data.ConnectionState.Open)
            con.Close();
    }

Voici comment vous pouvez récupérer des enregistrements de la base de données dans datatable.

J'espère que c'est ce que vous cherchiez.

8
RL89

Le code suivant fonctionne pour moi ... j'ai ajouté l'exception dans le cas où connectionString n'était pas fondée dans web.config

web.config: 

 <configuration>
  <connectionStrings>
    <add name="DBConnection" connectionString="Data Source=myaddress;Initial Catalog=MyCatalog;User ID=myuser;Password=pass;Encrypt=True;TrustServerCertificate=False"
         providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

Dans ma classe de connexion:

static internal string GetSqlConnectionString(){

try {
    ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings("DataBaseConnection");
    if (mySetting == null)
        throw new Exception("Database connection settings have not been set in Web.config file");

    return mySetting.ConnectionString;

} catch (Exception ex) {
    throw;
}}
0
Crying Freeman

J'ai une méthode sur ma classe WebAssistant . J'ai une clé sur appSettings qui contient mon WebAppName, vérifiez la ligne suivante:

<add key="DOMAIN_NAME" value="mRizvandi.com"/>

et mon nom de connexion alwyas a un modèle "DomainName" + "DBConnectionString" tel que:

<add name="mRizvandiDBConnectionString" connectionString=...

Ok, tout est prêt pour obtenir connectionstring sans passer aucune chaîne.

    public static string GetDBConnectionString()
    {
        string retValue = "";
        string domainUrl = "";
        string connectionKey = "";
        string dbConnectionString = "";

        domainUrl = GetDomainUrl();
        connectionKey = domainUrl.Substring(0, domainUrl.IndexOf(".")) + "DBConnectionString";
        dbConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionKey].ToString();
        retValue = dbConnectionString;

        return retValue;
    }

J'espère que cela serait utile.

0
mRizvandi

Essayer 

 string ConString = System.Configuration.ConfigurationManager.ConnectionStrings[ConfigurationManager.ConnectionStrings.Count -1].ConnectionString;
0
K.M.