2012-02-22 82 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

相关问题