2012-09-19 12 views
23

Desidero sapere come ottenere la stringa di connessione dal file web.config in asp.net.Ottieni stringa di connessione da Web.config in asp.net

Conosco solo la via di seguito.

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

dovrebbe essere 'ConfigurationManager.ConnectionStrings [ "test"]. ConnectionString; 'ma si tratta dell'unico modo corretto che hai. –

+0

cosa c'è di sbagliato in conString = ConfigurationManager.ConnectionStrings ["test"]. ToString(); –

+2

@Mitch, per favore vedi [this] (http://meta.stackexchange.com/questions/76195/how-to-deal-with-have-you-tried-google-comments) - il tuo commento non è davvero costruttivo per nessuno . –

risposta

34

utilizzando il ConfigurationManager.ConnectionStrings è l'unico modo corretto, per utilizzarlo correttamente con sanity controllare si può avere tale codice:

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

Questo getterà errore utile nel caso in cui la stringa di connessione non è presente, invece di criptico errore "oggetto nullo".

pena di ricordare che la classe ConnectionStringSettings è l'override del metodo ToString():

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

Quindi vuol dire che l'uso ConfigurationManager.ConnectionStrings["test"].ToString() è la stessa come tuttavia è sempre meglio eseguire test di integrità e personalmente ha l'aspetto più pulito di utilizzare la proprietà effettiva e non dipende dalla classe per darla.

+0

grazie :) Hai aumentato le mie conoscenze. –

+0

da cui 'conString' proveniva dalla riga' conString = mySetting.ConnectionString; '?? – sam

+0

@sam campo statico della classe: 'stringa statica pubblica conString;', vedere il codice nella domanda. –

8

Ecco l'intera soluzione: -

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

In questo modo è possibile recuperare i record da database in DataTable.

Spero che questo sia quello che stavi cercando.

+0

voglio solo modi per ottenere la stringa di connessione. –

+5

Dovresti leggere la domanda .... –

0

Ho un metodo sulla mia classe WebAssistant. Ho un tasto sulla appSettings che contengono il mio WebAppName, controllare la linea di seguito:

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

e il mio nome collegamento alwyas ha "DomainName" + "DBConnectionString" modello come ad esempio:

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

Ok, tutto è pronto per ottenere il connectiontring senza passare alcuna stringa.

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

Spero possa essere utile.

0

Il seguente codice funziona per me. Ho aggiunto l'eccezione nel caso in cui non ConnectionString fondata nel 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> 

Nella mia classe di connessione:

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

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). –

Problemi correlati