使用本地数据库构建 C# WinForms 应用程序

old*_*ort 1 c# winforms localdb

我正在尝试从 ac# winforms 项目构建我的第一个 .exe。我正在使用 Flexera 安装盾。到目前为止,我可以构建和安装它,并且它在我正在开发的同一台机器上成功运行。在这个项目中,我使用的是本地数据库。我也可以将它安装在另一台机器上,但是一旦我尝试通过按钮访问 Db,它就会抱怨。我认为这与连接字符串有关。至少它在我试图访问 Db 的那一行抱怨:

Error 26 - Error Locating Server/Instance Specified 
Run Code Online (Sandbox Code Playgroud)

这是我明显错误的连接字符串:

string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=""C:\Users\idiot\Documents\Visual Studio 2013\Projects\Vis\Vis\LocalDbVisTest.mdf"";Integrated Security=True";
Run Code Online (Sandbox Code Playgroud)

感谢您提前提供任何帮助或提示!

dav*_*v_i 5

不要为连接字符串使用绝对路径,而是使用

Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\LocalDbVisTest.mdf;Integrated Security=True
Run Code Online (Sandbox Code Playgroud)

你的程序找不到数据库的原因是因为它正在查找

C:\Users\idiot\Documents\Visual Studio 2013\Projects\Vis\Vis\LocalDbVisTest.mdf
Run Code Online (Sandbox Code Playgroud)

大概在您的客户端机器上不存在。

您可以DataDirectory使用AppDomain.CurrentDomain.SetData("DataDirectory", path). 您可以通过使用获取可执行文件的路径AppDomain.CurrentDomain.BaseDirectory