2012-09-19 5 views
23

Ich möchte wissen, wie die Verbindungszeichenfolge von web.config-Datei in asp.net erhalten.Get Connection String von Web.config in asp.net

Ich kenne nur den unteren Weg.

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

Es sollte 'ConfigurationManager.ConnectionStrings sein [ "test"]. ConnectionString; aber das ist der einzig richtige Weg, den Sie haben. –

+0

Also was ist los mit ConString = ConfigurationManager.ConnectionStrings ["Test"]. ToString(); –

+2

@Mitch siehe [dies] (http://meta.stackexchange.com/questions/76195/how-to-deal-with-have-you-tried-google-comments) - Dein Kommentar ist für niemanden wirklich konstruktiv . –

Antwort

34

Mit den ConfigurationManager.ConnectionStrings über den einzig richtigen Weg ist, es mit Vernunft richtig zu verwenden überprüfen Sie solchen Code haben:

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

Diese nützliche Fehler werfen wird die Verbindungszeichenfolge fehlt, statt kryptisch bei "Null Objekt" Fehler.

wert zu erwähnen, dass die ConnectionStringSettings Klasse überschreibt die ToString() Methode:

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

So bedeutet es, dass ConfigurationManager.ConnectionStrings["test"].ToString() mit gleich ist wie aber immer noch besser Plausibilitätsprüfung durchführen und persönlich sieht es sauberer die verwenden tatsächliche Eigenschaft und nicht von der Klasse abhängig, um es zu geben.

+0

danke :) Sie haben mein Wissen erhöht. –

+0

wo 'conString' aus der Zeile' conString = mySetting.ConnectionString; '?? – sam

+0

@sam statisches Feld der Klasse: 'public static string conString;', siehe Code in der Frage. –

8

Hier ist die gesamte Lösung: -

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

Dies ist, wie Sie Datensätze aus der Datenbank in Datentabelle abrufen kann.

Ich hoffe, das ist, was Sie gesucht haben.

+0

Ich möchte nur Möglichkeiten, Verbindungszeichenfolge zu erhalten. –

+5

Sie sollten die Frage lesen .... –

0

Ich habe eine Methode auf meiner WebAssistant-Klasse. ich habe einen Schlüssel auf appSettings die meine WebAppName enthält, überprüfen Sie die folgende Zeile:

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

und meine Verbindungsnamen alwyas hat "Domainname" + "DBConnectionString" Vorlage wie:

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

Ok, Alles ist bereit, Verbindungszeichenfolge zu erhalten, ohne eine Zeichenfolge zu übergeben.

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

Ich hoffe, dass es hilfreich wäre.

0

Der folgende Code funktioniert für mich. Ich habe die Ausnahme für den Fall hinzugefügt Connectionstring nicht in web.config gegründet

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> 

In meiner Verbindungsklasse:

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

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag - du kannst deine eigenen Beiträge jederzeit kommentieren, und sobald du genügend [Reputation] (http://stackoverflow.com/help/whats-reputation) hast, wirst du das tun in der Lage sein [jeden Beitrag kommentieren] (http://stackoverflow.com/help/privileges/comment). –