我正在尝试从c#winforms项目构建我的第一个.exe。我正在使用Flexera安装护盾。到目前为止,我可以构建和安装它,并在我正在开发的同一台机器上成功运行。在这个项目中我使用的是本地数据库。我也可以在另一台机器上安装它,但是当我试图通过一个按钮访问Db时它会抱怨。我认为它与连接字符串有关。至少它在我试图访问Db的行上抱怨:
Error 26 - Error Locating Server/Instance Specified
这是我明显错误的连接字符串:
string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=""C:\Users\idiot\Documents\Visual Studio 2013\Projects\Vis\Vis\LocalDbVisTest.mdf"";Integrated Security=True";
感谢您提前提供任何帮助或提示!
答案 0 :(得分:4)
不使用连接字符串的绝对路径,而是使用
Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\LocalDbVisTest.mdf;Integrated Security=True
您的程序无法找到数据库的原因是因为它正在查找
C:\Users\idiot\Documents\Visual Studio 2013\Projects\Vis\Vis\LocalDbVisTest.mdf
据推测,您的客户机上不存在。
您可以使用DataDirectory
手动设置AppDomain.CurrentDomain.SetData("DataDirectory", path)
。您可以使用AppDomain.CurrentDomain.BaseDirectory