帮助连接字符串

时间:2010-03-20 20:31:01

标签: c# connection-string

所以我正在尝试连接到指定位置的数据库,并且只要在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位置定义在同一个文件夹中吗?。

2 个答案:

答案 0 :(得分:3)

我可以想到要做的一些事情:

  1. 将数据库存储在应用程序旁边,然后在连接字符串中使用相对文件路径(这使用ADO.Net中内置的替换字符串 - 有关详细信息,请参阅here):< / p>

    string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MyDatabase01.accdb;Persist Security Info=true";
    
  2. 将连接字符串存储在配置文件中。当您的应用程序在数据库位于不同位置的计算机上运行时,可以更改此设置。

  3. 在第一次使用时让您的应用程序提示输入数据库的位置,然后将该位置保存为设置文件以在连接字符串中使用。

  4. 如果您使用该应用程序分发数据库,​​则选项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"));