如何格式化Windows Forms应用程序的app.config文件中的Db连接字符串?

时间:2014-07-23 08:18:12

标签: c# winforms formatting connection-string app-config

我已经在互联网上试图为Windows窗体应用程序正确配置我的App.config连接字符串无效。

这是我第一次尝试将我的应用程序连接到我的数据库:

private static string CONNECTION_STRING =
    @"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\Visual Studio 2013\Projects\Test\Test\MyDatabase.mdf;Integrated Security=True;Connect Timeout=30";

此连接字符串在本地计算机上运行程序时运行良好,但无法在其他任何程序上运行。我认为这是因为连接字符串中包含的绝对路径。在查看了有关App.config文件的许多线程之后,我添加了System.Configuration引用,并将以下内容添加到Form1和App.config代码中的相应部分:

在我的Form1.cs中:

using System.Configuration;

private static string CONNECTION_STRING = ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString;

在我的App.config文件中:

  <connectionStrings>
    <add name="TestConnectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf" providerName="System.Data.SqlClient"/>
  </connectionStrings>

尝试运行程序时,收到以下错误:

  

尝试为文件D:\ Visual Studio附加自动命名的数据库   2013 \ Projects \ Test \ Test \ bin \ Debug \ MyDatabase.mdf失败。一个数据库   存在相同的名称,或者指定的文件无法打开,或者是   位于UNC分享。

我已经读过| DataDirectory | connectionString中包含的内容仅适用于Web应用程序,但我也读过用户在使用它时成功使用它的注释。

我在这里缺少什么?如何在App.config文件中设置connectionString,以便该应用程序仍然可以访问数据库,无论我从哪台机器运行可执行文件?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

通常|DataDirectory|适用于WinForms应用程序。我只是在我的本地机器上尝试过它就没事了。

也许您的mdf数据库文件不在根文件夹中?我创建了一个名为Data的新文件夹,在那里移动了mdf文件,并且能够获得与您完全相同的异常。

所以在我的情况下,将connectionString参数更改为此解决了问题:

AttachDbFileName=|DataDirectory|\Data\Database1.mdf;