2012-02-22 42 views
6

我有4/5項目的解決方案。我應該在哪裏爲我的類庫添加連接字符串,以及如何訪問它們?

我目前有一個連接字符串爲我的域名項目硬編碼在c#文件中。

我想把這個在web.config或東西。從我在這裏和其他地方閱讀的內容中,我應該將這些連接字符串存儲在調用應用程序的Web配置中?

如果是這樣,我該如何訪問它?

當我做這樣的事情在我的類庫:

ConnectionStringSettingsCollection connectionStrings = 
    connectionStringsSection.ConnectionStrings; 

類型或命名空間找不到,我失去了一個參考的東西?

+0

由於某些奇怪的原因(Microsoft,你知道)默認情況下不引用所需的程序集。您必須手動將引用添加到需要使用它的每個項目的'System.Configuration'程序集。 – 2012-02-22 13:18:23

回答

4

連接字符串的config模式中有一個現有模式。

這那張<configuration>元素:

<connectionStrings> 
    <add name="example" connectionString="..."/> 
</connectionStrings> 

在代碼中,你應該使用ConfigurationManager訪問它們。爲了引用它,您需要將using System.Configuration;名稱空間添加到您的文件,並將System.Configuration.dll程序集引用添加到您的項目(如果尚未存在)。

string conn = ConfigurationManager.ConnectionStrings["example"]; 
+0

ConfigurationManager是一個不錯的選擇,現在我記得2個其他選擇:註冊表和二進制文件(使用二進制格式化程序),請檢查:http:// stackoverflow。com/questions/9375112/stored-application-settings-in-project-folder-rather-appdata/9375425#9375425 – 2012-02-22 13:19:15

+2

@AmenAyach - 由於OP專門詢問了'web.config',註冊表和二進制文件並不是真的適當。 – Oded 2012-02-22 13:23:28

+0

+1我的壞,我沒有注意到,我只看標籤:) – 2012-02-22 13:27:26

3

與主應用程序和accessin IIb類定義

的ConnectionStrings:添加使用System.Configuration; add ref:System.Configuration;

ConfigurationManager.ConnectionStrings["key"] 

alternetive

System.Configuration.ConfigurationSettings.AppSettings["key"]) 
+0

只有當您的連接字符串位於「AppSettings」中時,它才應該位於Web的「ConnectionStrings」標記中。配置文件 – musefan 2012-02-22 13:19:27

+1

爲什麼不使用'ConfigurationManager'暴露的內置'ConnectionStrings'部分?從.NET 2.0開始,對連接字符串使用'AppSettings'一直不鼓勵。 – Oded 2012-02-22 13:20:58

5

您需要參考您的主項目添加到System.Configuration

,那麼你可以訪問連接字符串,這樣的...

System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;//<- last bit for a string version of the full connection string 

ConfigurationManager也將讓你從你的web.config文件訪問其他一些有用的特性(這也會爲的app.config文件的工作)

0

在你的代碼中使用這個。

String sqlDbConn = 
     ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString(); 

名稱也應該defind在你的web配置;

<connectionStrings> 
<add name="ApplicationServices" 
     connectionString="You database information" 
     /> 

</connectionStrings> 

並且還使用System.Configuration添加;命名空間

+1

'ToString()'調用是多餘的。 – Oded 2012-02-22 13:33:59

相關問題