所以我正在尝试连接到指定位置的数据库,并且只要在DataSource字段指定的同一位置的数据库建立连接,但是如果我尝试分发我的应用程序,文件路径怎么办?会改变并导致我想避免的错误。这是我的结论:
string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC1\Documents\Visual Studio 2008\Projects\Test\Test\bin\Debug\MyDatabase01.accdb;Persist Security Info=true";
无论如何我可以将DataSource位置定义在同一个文件夹中吗?。
答案 0 :(得分:3)
我可以想到要做的一些事情:
将数据库存储在应用程序旁边,然后在连接字符串中使用相对文件路径(这使用ADO.Net中内置的替换字符串 - 有关详细信息,请参阅here):< / p>
string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MyDatabase01.accdb;Persist Security Info=true";
将连接字符串存储在配置文件中。当您的应用程序在数据库位于不同位置的计算机上运行时,可以更改此设置。
在第一次使用时让您的应用程序提示输入数据库的位置,然后将该位置保存为设置文件以在连接字符串中使用。
如果您使用该应用程序分发数据库,则选项1是最佳选择。如果没有,我会选择3。
答案 1 :(得分:2)
如果无法在连接字符串中使用相对路径,则可以在运行时生成它 类似的东西:
string connstring = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=true", Path.Combine(Directory.GetCurrentDirectory(), "MyDatabase01.accdb"));