2012-09-19 48 views
23

我想知道如何從asp.net中的web.config文件獲取連接字符串。從asp.net中的Web.config獲取連接字符串

我只知道下面的方法。

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

它應該是'ConfigurationManager.ConnectionStrings [ 「test」] .ConnectionString;'但這是你唯一正確的方式。 –

+0

因此最新錯誤 conString = ConfigurationManager.ConnectionStrings [「test」]。ToString(); –

+2

@Mitch請參閱[this](http://meta.stackexchange.com/questions/76195/how-to-deal-with-have-you-tried-google-comments) - 您的評論對任何人都不是很有建設性。 –

回答

34

使用ConfigurationManager.ConnectionStrings大約是唯一正確的方法,用理智正確地使用它檢查是否能有這樣的代碼:

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

這將在情況下,連接字符串缺少拋出有用的錯誤,而不是神祕「空對象」錯誤。

值得一提的是,ConnectionStringSettings類重寫ToString()方法:

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

因此,這意味着使用ConfigurationManager.ConnectionStrings["test"].ToString()是同樣喜歡但是你還是更好地履行完整性檢查,並親自它看起來更清潔使用實際的財產,而不是依靠班級來給它。

+0

謝謝:)你增加了我的知識。 –

+0

其中'conString'來自行'conString = mySetting.ConnectionString;'?? – sam

+0

@sam該類的靜態字段:'公共靜態字符串conString;',請參閱問題中的代碼。 –

8

這裏是整個解決方案: -

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

這是你如何獲取從數據庫記錄到的數據表。

希望這是你正在尋找。

+0

我只想要獲取連接字符串的方法。 –

+5

你應該閱讀這個問題.... –

0

我在我的WebAssistant類上有一個方法。 我有包含我的WebAppName的appSettings的關鍵,檢查以下行:

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

和我的連接名稱alwyas具有 「域名」 + 「DBConnectionString」 模板,例如:

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

好,一切都準備好,無需傳遞任何字符串即可獲取連接字符串

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

我希望會有所幫助。

0

以下代碼適用於我。 我已經添加的情況下,異常的ConnectionString不是建立在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> 

在我的連接類:

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

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 –

相關問題