在app.config中添加连接字符串

时间:2013-06-26 00:40:23

标签: c# class-library

我在C#中有一个类库,它有几个类和一个app.config。我已将ConnectionString放在app.config中,如下所示:

<connectionStrings>
    <add name="TRN_DB"
         connectionString="Database=TRN;Server=NDTSSN;User ID=ln_users2;Password=%4nu$r!;Connection Timeout=30;pooling=false;" 
         providerName="System.Data.SqlClient"
    />
</connectionStrings>

我尝试在项目的其中一个类中打开连接字符串,如下所示:

     string connectionString = ConfigurationManager.ConnectionStrings["TRN_DB"].ConnectionString.ToString();
       SqlConnection con = new SqlConnection(connectionString);
       con.Open();

但它给了我一个错误:

  

{“对象引用未设置为对象的实例。”}

当我在web.config中的web项目中使用相同的方式时,连接字符串是正确的,有人知道如何在app.config中访问它吗?我也是这样用的:

 string connectionString = System.Configuration.ConfigurationSettings.AppSettings["TRN_DB"];

这个给我这个错误:

  

此方法已过时,已被System.Configuration取代!System.Configuration.ConfigurationManager.Appsettings

为了说清楚,我的解决方案中没有任何其他项目,因为我希望我的类库能够独立工作。我无法将web项目和web.config应用于此。所以我应该将连接字符串添加到app.config并访问它或者将web.config添加到我的类库项目中。我不确定哪一个是可行的。

6 个答案:

答案 0 :(得分:5)

如果您使用类库运行 Web 项目, 在 Web 项目

中添加连接字符串web.config

如果您正在使用类库运行 Console / WinForm 项目, 在控制台/ WinForm 项目

中添加连接字符串app.config

修改库项目中的配置将不适用于您的情况。

答案 1 :(得分:2)

据我所知,你有一个带有连接字符串配置文件的类库,并在另一个应用程序中引用该库。问题是app.config(或web.config)是相对于正在执行的应用程序。

假设您的类库名为Shared.dll并且具有Shared.dll.config和另一个名为Application with Application.exe.config的应用程序(假设它是一个控制台应用程序)。运行该应用程序时,使用的app.config将是Application.exe.config。

如果您尝试在此应用程序中尝试访问名为TRN_DB的连接字符串,它将在应用程序的配置文件中查找未定义的连接字符串并返回null(因此引用异常)。

答案 2 :(得分:1)

在Windows窗体应用程序中,总是在引用中添加对System.Configuration的引用,然后在代码页中添加using System.Configuration,然后使用这样的连接字符串:

string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;

答案 3 :(得分:1)

我遇到了类似的问题,问题是我需要将System.Configuration添加到References。

我想用System.Configuration添加;该类可以解决问题,但我必须在引用之前将System.Configuration添加到引用中。

答案 4 :(得分:0)

连接字符串的东西需要在主exe项目的app.config中,否则你需要手动加载它。

答案 5 :(得分:0)

正如其他人所说,库将使用配置文件来执行应用程序。

我想添加一个建议。一个选项需要考虑,因为(在我看来)有点夸张和专业的触摸是创建一个自定义配置部分。这样您就可以对图书馆的设置进行分组,而不会对图书馆使用的设置产生任何疑问:http://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx