2012-09-19 25 views
23

Quiero saber las formas de obtener la cadena de conexión del archivo web.config en asp.net.Obtener cadena de conexión de Web.config en asp.net

Solo sé el siguiente formulario.

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(); 
      } 
     } 
    } 
+2

Cabe '[ConfigurationManager.ConnectionStrings "prueba"]. ConnectionString; 'pero esa es la única forma correcta que tienes. –

+0

entonces qué está mal con conString = ConfigurationManager.ConnectionStrings ["test"]. ToString(); –

+2

@Mitch, consulte [this] (http://meta.stackexchange.com/questions/76195/how-to-deal-with-have-you-tried-google-comments) - su comentario no es realmente constructivo para nadie . –

Respuesta

34

utilizando los ConfigurationManager.ConnectionStrings se trata de la única manera adecuada, para usarlo correctamente con cordura comprobar que puede tener dicho código:

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; 
} 

Esto lanzará el error útil en caso de que la cadena de conexión no está presente, en lugar de críptico error "objeto nulo".

Vale la pena mencionar que la clase ConnectionStringSettings es reemplazar el ToString() método:

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

lo tanto, significa que el uso de ConfigurationManager.ConnectionStrings["test"].ToString() es el mismo como sin embargo, todavía mejor realizar comprobación de validez y personalmente se ve más limpia a utilizar el propiedad real y no depender de la clase para darlo.

+0

gracias :) Aumentaste mis conocimientos. –

+0

de donde viene 'conString' en la línea' conString = mySetting.ConnectionString; '?? – sam

+0

@sam campo estático de la clase: 'public static string conString;', ver el código en la pregunta. –

8

Aquí es la solución completa: -

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(); 
    } 

Así es como se puede recuperar los registros de base de datos en tabla de datos.

Espero que esto es lo que estabas buscando.

+0

solo quiero formas de obtener la cadena de conexión. –

+5

Deberías leer la pregunta .... –

0

Tengo un método en mi clase de asistente de web. Tengo una llave en appsettings que contienen mi WebAppName, marque la línea de abajo:

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

y mi nombre de conexión alwyas tiene "NombreDeDominio" + "DBConnectionString" plantilla tales como:

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

Ok, todo está listo para obtener connectionstring sin pasar ninguna cadena.

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; 
    } 

Espero que sea útil.

0

El siguiente código funciona para mí. He añadido la excepción en caso de que no connectionString fundada en 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> 

En mi clase de conexión:

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

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). –

Cuestiones relacionadas