App.config连接字符串相对路径

时间:2011-02-15 09:43:38

标签: .net sqlite configuration connection-string app-config

我需要在app.config中设置sqlite连接字符串。我想设置相对于调试/发布文件夹的路径,将数据库文件复制到这些文件夹。

<add name="EmailsSQLite" connectionString="data source=c:\Users\Test\Documents\Visual Studio 2008\Projects\TestConsole\Emails\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>

我希望有类似的东西:

<add name="EmailsSQLite" connectionString="data source=\data\EmailDatabase.sqlite" providerName="System.Data.SQLite"/>

这可能吗?

3 个答案:

答案 0 :(得分:15)

您可以按照Lefty的回答中所述指定相对路径。

但是这将与当前工作目录相关,当前工作目录不一定是包含可执行文件的目录。

这样做的一种方法是在使用之前修改连接字符串,例如

在app.config中:

 connectionString="data source={AppDir}\data\EmailDatabase.sqlite

在您的代码中:

ConnectionStringSettings c = ConfigurationManager.ConnectionStrings[name];    
if (c == null)
{
    ... handle missing connection string ...
}
string fixedConnectionString = c.ConnectionString.Replace("{AppDir}", AppDomain.CurrentDomain.BaseDirectory);
... use fixedConnectionString

答案 1 :(得分:4)

尝试使用“。”在字符串的数据源部分中的第一个反斜杠之前。

例如

data source=.\data\EmailDatabase.sqlite

答案 2 :(得分:4)

是的,这是可能的。尝试使用| DataDirectory |。

在App.config中

<add name="SqliteConnectionString" connectionString="Data Source=|DataDirectory|\Database.sqlite;" providerName="System.Data.SQLite"/>

此页面上的更多信息 https://msdn.microsoft.com/en-us/library/cc716756.aspx