我已经在互联网上试图为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,以便该应用程序仍然可以访问数据库,无论我从哪台机器运行可执行文件?
感谢您的帮助!
答案 0 :(得分:0)
通常|DataDirectory|
适用于WinForms应用程序。我只是在我的本地机器上尝试过它就没事了。
也许您的mdf数据库文件不在根文件夹中?我创建了一个名为Data的新文件夹,在那里移动了mdf文件,并且能够获得与您完全相同的异常。
所以在我的情况下,将connectionString参数更改为此解决了问题:
AttachDbFileName=|DataDirectory|\Data\Database1.mdf;